|
<input type="button" onclick="alert(this.value)" value="我是 button" />
動(dòng)態(tài)添加onclick事件:
<input type="button" value="我是 button" id="bu">
<script type="text/Javascript">
var bObj=document.getElementById("bu");
bObj.onclick= objclick;
function objclick(){alert(this.value)};
</script>
如果使用匿名函數(shù) function(){},則如下面所示:
<input type="button" value="我是 button" id="bu">
<script type="text/Javascript">
var bObj=document.getElementById("bu");
bObj.onclick=function(){alert(this.value)};
</script>
上面的方法其實(shí)原理都一樣,都是定義 onclick 屬性的值。值得注意的是,如果多次定義 obj.onclick,例如:obj.onclick=method1; obj.onclick=method2; obj.onclick=method3,那么只有最后一次的定義obj.onclick=method3才生效,前兩次的定義都給最后一次的覆蓋掉了。
再看 IE 中的 attachEvent:
<input type="button" value="我是拉登" id="bu">
<script type="text/Javascript">
var bObj = document.getElementById("bu");
bObj.attachEvent("onclick",method1);
bObj.attachEvent("onclick",method2);
bObj.attachEvent("onclick",method3);
function method1(){alert("第一個(gè)alert")}
function method2(){alert("第二個(gè)alert")}
function method3(){alert("第三個(gè)alert")}
</script>
執(zhí)行順序是 method3 > method2 > method1 ,先進(jìn)后出,與堆棧中的變量相似。需要注意的是attachEvent 中第一個(gè)參數(shù)是on開頭的,可以是 onclick/onmouseover/onfocus 等等
據(jù)說(未經(jīng)確認(rèn)驗(yàn)證)在 IE 中使用 attachEvent 后最好再使用 detachEvent 來釋放內(nèi)存
再看看 Firefox 中的的 addEventListener:
<input type="button" value="我是布什" id="bu">
<script type="text/Javascript">
var bObj = document.getElementById("bu");
bObj.addEventListener("click",method1,false);
bObj.addEventListener("click",method2,false);
bObj.addEventListener("click",method3,false);
function method1(){alert("第一個(gè)alert")}
function method2(){alert("第二個(gè)alert")}
function method3(){alert("第三個(gè)alert")}
</script>
可以看到,在 ff 中的執(zhí)行順序是 method1 > method2 > method3 , 剛好與 IE 相反,先進(jìn)先出。需要注意的是 addEventListener 有三個(gè)參數(shù),第一個(gè)是不帶“on”的事件名稱,如 click/mouseover/focus等。
JavaScript技術(shù):javascript下給元素添加事件的方法與代碼,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。