attachEvent与new Function,js给事件加参数
2007-12-06 11:48
441 查看
先看两个 例子:
例一:
<script language="javascript">...
function addChange(id,ds)
...{
var sid = document.getElementById(id);
sid.onchange = new Function("dds('"+ds+"')");
}
function dds(d)
...{
document.getElementById("xx").innerHTML = d;
}
</script>
<a href="javascript:addChange('s','werdsf')">adfad</a>
<select name="s" id="s">
<option value="1">1</option>
<option value="2">2</option>
</select>
<div id="xx"></div>
例二:
<script language="javascript">...
function addChange(id,ds)
...{
var sid = document.getElementById(id);
sid.attachEvent("onchange",function ()...{dds(ds)});
}
function dds(d)
...{
document.getElementById("xx").innerHTML = d;
}
</script>
<a href="javascript:addChange('s','werdsf')">adfad</a>
<select name="s" id="s">
<option value="1">1</option>
<option value="2">2</option>
</select>
<div id="xx"></div>
这两个例子都是给事件加参数的方法.所不同的是,例一中:用的是new Function,例二中用的是attachEvent.
如果没有参数,则在例一中应改为:sid.onchange = dds;在例一中也可以这样写:sid.setAttribute("onchange",function (){dds(ds)});
注意,这里的dds,不能带参数,不能带(),他表示的是这个把这个函数赋给onchange事件,如果带了括号,就表示把这个函数dds的返回值赋给onchange事件,这是不对的,因为,我们不能把一个值赋给一个事件.例二中也是同样的道理
例一:
<script language="javascript">...
function addChange(id,ds)
...{
var sid = document.getElementById(id);
sid.onchange = new Function("dds('"+ds+"')");
}
function dds(d)
...{
document.getElementById("xx").innerHTML = d;
}
</script>
<a href="javascript:addChange('s','werdsf')">adfad</a>
<select name="s" id="s">
<option value="1">1</option>
<option value="2">2</option>
</select>
<div id="xx"></div>
例二:
<script language="javascript">...
function addChange(id,ds)
...{
var sid = document.getElementById(id);
sid.attachEvent("onchange",function ()...{dds(ds)});
}
function dds(d)
...{
document.getElementById("xx").innerHTML = d;
}
</script>
<a href="javascript:addChange('s','werdsf')">adfad</a>
<select name="s" id="s">
<option value="1">1</option>
<option value="2">2</option>
</select>
<div id="xx"></div>
这两个例子都是给事件加参数的方法.所不同的是,例一中:用的是new Function,例二中用的是attachEvent.
如果没有参数,则在例一中应改为:sid.onchange = dds;在例一中也可以这样写:sid.setAttribute("onchange",function (){dds(ds)});
注意,这里的dds,不能带参数,不能带(),他表示的是这个把这个函数赋给onchange事件,如果带了括号,就表示把这个函数dds的返回值赋给onchange事件,这是不对的,因为,我们不能把一个值赋给一个事件.例二中也是同样的道理
相关文章推荐
- JS添加/绑定事件监听函数并传参数attachEvent和addEventListener兼容个浏览器
- js 添加事件 attachEvent 和 addEventListener 的用法
- 【JS进阶2】attachEvent()/addEventListener() 对象添加触发事件
- JS: addEventListner(attachEvent)和直接在markup中加事件(onclick, etc.)的区别
- js添加事件attachEvent和addEventListener的用法
- Jquery 使用 onpropertychange 会被执行2遍 以及 onpropertychange 事件参数 不用attachEvent
- JS中的attachEvent、addEventListener如何传递参数
- js 添加事件 attachEvent(IE) 和 addEventListener(W3C) 的用法
- js事件处理程序的运行环境(改变attachEvent内部的this指向&封装兼容性的 addEvent方法)
- js 添加事件 attachEvent 和 addEventListener 的用法
- (转载)JS事件监听 JS:attachEvent和addEventListener使用方法
- js 添加事件 attachEvent 和 addEventListener 的用法
- js 添加事件 attachEvent 和 addEventListener 的用法
- js添加事件attachEvent和addEventListener的用法
- js attachEvent ,addEventListener 和 on 绑定事件的区别
- JS注册事件 JS:attachEvent和addEventListener 使用方法
- js attachEvent and js addEventLintener JS事件
- js 添加事件 attachEvent和addEventListener 使用方法
- JS事件监听 JS:attachEvent和addEventListener 使用方法
- FireFox下为元素附加事件并传递参数-addEventListener attachEvent - Pass parameters to event-function