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

时间:2021-05-26

最简单的是这样:

<inputtype="button"onclick="alert(this.value)"value="我是button"/>
动态添加onclick事件:

<inputtype="button"value="我是button"id="bu">
<scripttype="text/javascript">
varbObj=document.getElementById("bu");
bObj.onclick=objclick;
functionobjclick(){alert(this.value)};
</script>
如果使用匿名函数function(){},则如下面所示:

<inputtype="button"value="我是button"id="bu">
<scripttype="text/javascript">
varbObj=document.getElementById("bu");
bObj.onclick=function(){alert(this.value)};
</script>

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

再看IE中的attachEvent:

<inputtype="button"value="我是拉登"id="bu">
<scripttype="text/javascript">
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")}
</script>
执行顺序是method3>method2>method1,先进后出,与堆栈中的变量相似。需要注意的是attachEvent中第一个参数是on开头的,可以是onclick/onmouseover/onfocus等等

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

再看看Firefox中的的addEventListener:

<inputtype="button"value="我是布什"id="bu">
<scripttype="text/javascript">
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")}
</script>
可以看到,在ff中的执行顺序是method1>method2>method3,刚好与IE相反,先进先出。需要注意的是addEventListener有三个参数,第一个是不带“on”的事件名称,如click/mouseover/focus等。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章