Heim >Web-Frontend >js-Tutorial >javascript下给元素添加事件的方法与代码_表单特效

javascript下给元素添加事件的方法与代码_表单特效

WBOY
WBOYOriginal
2016-05-16 19:10:231146Durchsuche

最简单的是这样:


动态添加onclick事件:


<script> <BR>var bObj=document.getElementById("bu"); <BR>bObj.onclick= objclick; <BR>function objclick(){alert(this.value)}; <BR></script>
如果使用匿名函数 function(){},则如下面所示:


<script> <BR>var bObj=document.getElementById("bu"); <BR>bObj.onclick=function(){alert(this.value)}; <BR></script>

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

再看 IE 中的 attachEvent:


<script> <BR>var bObj = document.getElementById("bu"); <BR>bObj.attachEvent("onclick",method1); <BR>bObj.attachEvent("onclick",method2); <BR>bObj.attachEvent("onclick",method3); <BR>function method1(){alert("第一个alert")} <BR>function method2(){alert("第二个alert")} <BR>function method3(){alert("第三个alert")} <BR></script>
执行顺序是 method3 > method2 > method1 ,先进后出,与堆栈中的变量相似。需要注意的是attachEvent 中第一个参数是on开头的,可以是 onclick/onmouseover/onfocus 等等

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

再看看 Firefox 中的的 addEventListener:


<script> <BR>var bObj = document.getElementById("bu"); <BR>bObj.addEventListener("click",method1,false); <BR>bObj.addEventListener("click",method2,false); <BR>bObj.addEventListener("click",method3,false); <BR>function method1(){alert("第一个alert")} <BR>function method2(){alert("第二个alert")} <BR>function method3(){alert("第三个alert")} <BR></script>
可以看到,在 ff 中的执行顺序是 method1 > method2 > method3 , 刚好与 IE 相反,先进先出。需要注意的是 addEventListener 有三个参数,第一个是不带“on”的事件名称,如 click/mouseover/focus等。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn