javascript下給元素添加事件的方法與代碼
更新時(shí)間:2007年08月13日 19:57:11 作者:
最簡(jiǎn)單的是這樣:
<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ù)說(shuō)(未經(jīng)確認(rèn)驗(yàn)證)在 IE 中使用 attachEvent 后最好再使用 detachEvent 來(lái)釋放內(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等。
<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ù)說(shuō)(未經(jīng)確認(rèn)驗(yàn)證)在 IE 中使用 attachEvent 后最好再使用 detachEvent 來(lái)釋放內(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等。
您可能感興趣的文章:
- JS動(dòng)態(tài)創(chuàng)建元素的兩種方法
- JS中動(dòng)態(tài)創(chuàng)建元素的三種方法總結(jié)(推薦)
- JS動(dòng)態(tài)創(chuàng)建DOM元素的方法
- js 動(dòng)態(tài)創(chuàng)建 html元素
- js實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建的元素綁定事件
- JavaScript動(dòng)態(tài)創(chuàng)建div等元素實(shí)例講解
- javascript與jquery動(dòng)態(tài)創(chuàng)建html元素示例
- 淺析JS動(dòng)態(tài)創(chuàng)建元素【兩種方法】
- JS中動(dòng)態(tài)添加事件(綁定事件)的代碼
- javascript 動(dòng)態(tài)添加事件代碼
- js實(shí)現(xiàn)為a標(biāo)簽添加事件的方法(使用閉包循環(huán))
- JS實(shí)現(xiàn)為動(dòng)態(tài)創(chuàng)建的元素添加事件操作示例
相關(guān)文章
一直復(fù)略了的一個(gè)問(wèn)題,關(guān)于表單重復(fù)提交
一直復(fù)略了的一個(gè)問(wèn)題,關(guān)于表單重復(fù)提交...2007-02-02javascript select列表內(nèi)容按字母倒序排序與按列表倒序排列
javascript select列表內(nèi)容按字母倒序排序與按列表倒序排列...2007-08-08javascript option onclick事件ie解決方案 兼容ie,firefox
javascript option onclick事件ie解決方案 兼容ie,firefox2009-12-12IE不支持option的display樣式,只能使用remove和add
想實(shí)現(xiàn)一個(gè)很簡(jiǎn)單的功能:當(dāng)選中“中介”時(shí),不顯示“求購(gòu)”與“求租”。本以為通過(guò)display:none即可實(shí)現(xiàn),結(jié)果發(fā)現(xiàn)在option元素上使用display:none在firefox中有效,在IE6、IE7、IE8中都無(wú)效。2009-12-12javascript下阻止表單重復(fù)提交、防刷新、防后退
javascript下阻止表單重復(fù)提交、防刷新、防后退...2007-08-08控制input的CSS但不影響CheckBox以及Radio的樣式
在一些Web界面,有時(shí)候?yàn)榱朔奖銜?huì)寫一個(gè)全局的input樣式,這樣所有的樣式會(huì)立刻變化,如果能更好的區(qū)分checkbox等呢。2009-09-09javascript 動(dòng)態(tài)創(chuàng)建 Option選項(xiàng)
javascript動(dòng)態(tài)創(chuàng)建Option選項(xiàng),選擇月份后動(dòng)態(tài)創(chuàng)建日期。2009-07-07