javascript下給元素添加事件的方法與代碼

來源:互聯網
上載者:User

最簡單的是這樣:

<input type="button" onclick="alert(this.value)" value="我是 button" />
動態添加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>
如果使用匿名函數 function(){},則如下面所示:

<input type="button" value="我是 button" id="bu">
<script type="text/javascript">
var bObj=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:

<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("第一個alert")}
function method2(){alert("第二個alert")}
function method3(){alert("第三個alert")}
</script>
執行順序是 method3 > method2 > method1 ,先進後出,與堆棧中的變數相似。需要注意的是attachEvent 中第一個參數是on開頭的,可以是 onclick/onmouseover/onfocus 等等

據說(未經確認驗證)在 IE 中使用 attachEvent 後最好再使用 detachEvent 來釋放記憶體

再看看 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("第一個alert")}
function method2(){alert("第二個alert")}
function method3(){alert("第三個alert")}
</script>
可以看到,在 ff 中的執行順序是 method1 > method2 > method3 , 剛好與 IE 相反,先進先出。需要注意的是 addEventListener 有三個參數,第一個是不帶“on”的事件名稱,如 click/mouseover/focus等。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.