欢迎来到福编程网,本站提供各种互联网专业知识!

javascript下给元素添加事件的方法与代码

发布时间:2007-08-13 作者: 来源:转载
最简单的是这样:动态添加onclick事件:varbObj=document.getElementById("bu");bObj.onclick=objclick;functionobjclick(){alert(this.value)};如果使用匿名函数function(){},则如下面所示:varbObj=document.getElementById("bu");bObj.onclick=functi
最简单的是这样:


动态添加onclick事件:



varbObj=document.getElementById("bu");
bObj.onclick=objclick;
functionobjclick(){alert(this.value)};

如果使用匿名函数function(){},则如下面所示:



varbObj=document.getElementById("bu");
bObj.onclick=function(){alert(this.value)};

上面的方法其实原理都一样,都是定义onclick属性的值。值得注意的是,如果多次定义obj.onclick,例如:obj.onclick=method1;obj.onclick=method2;obj.onclick=method3,那么只有最后一次的定义obj.onclick=method3才生效,前两次的定义都给最后一次的覆盖掉了。

再看IE中的attachEvent:



varbObj=document.getElementById("bu");
bObj.attachEvent("onclick",method1);
bObj.attachEvent("onclick",method2);
bObj.attachEvent("onclick",method3);
functionmethod1(){alert("第一个alert")}
functionmethod2(){alert("第二个alert")}
functionmethod3(){alert("第三个alert")}

执行顺序是method3>method2>method1,先进后出,与堆栈中的变量相似。需要注意的是attachEvent中第一个参数是on开头的,可以是onclick/onmouseover/onfocus等等

据说(未经确认验证)在IE中使用attachEvent后最好再使用detachEvent来释放内存

再看看Firefox中的的addEventListener:



varbObj=document.getElementById("bu");
bObj.addEventListener("click",method1,false);
bObj.addEventListener("click",method2,false);
bObj.addEventListener("click",method3,false);
functionmethod1(){alert("第一个alert")}
functionmethod2(){alert("第二个alert")}
functionmethod3(){alert("第三个alert")}

可以看到,在ff中的执行顺序是method1>method2>method3,刚好与IE相反,先进先出。需要注意的是addEventListener有三个参数,第一个是不带“on”的事件名称,如click/mouseover/focus等。

相关推荐