JavaScript中綁定事件的三種方式及去除綁定
在JavaScript中,有三種常用的綁定事件的方法
第一種辦法
函數(shù)寫在結(jié)構(gòu)層里面
非常不好,使頁面很混亂,行為與結(jié)構(gòu)得不到分離
<input type="button" onclick="func();">
綁定事件的第二種辦法
好處:行為與結(jié)構(gòu)開始分離
缺點(diǎn):
第二種綁定方式中只能給一個(gè)時(shí)間綁定一個(gè)處理函數(shù)
即.onclick = fn1;
. onclick = fn2
最終的效果是onclick = fn2
<select name="xueli" > <option value="">請選擇學(xué)歷</option> <option value="大學(xué)" >大學(xué)</option> <option value="中學(xué)">中學(xué)</option> <option value="初中">初中</option> <option value="小學(xué)">小學(xué)</option> </select> <form action=""> <p>Email:<input type="text" name="email"> 姓名:<input type="text" name="ming" > </p> </form>
document.getElementsByTagName('select')[0].onclick= function (){ alert('嘻嘻'); } document.getElementsByName('email')[0].onblur=function (){ alert('哈哈哈'); }
window.onload = function(){ var d = document.getElementById('school'); function fn1(){ alert('hello'); } function fn2(){ alert('world'); } d.onclick = fn1;//賦值操作 最終顯示fn2 d.onclick = fn2; }
綁定事件的第三種辦法
//錯(cuò)誤寫法1 window.onload = function(){ var d = document.getElementById('school'); function fn1(){//this此時(shí)指向window this.style.background = 'blue'; } function fn2(){//this此時(shí)指向window this.style.background = 'red'; } //寫一個(gè)匿名函數(shù) //最終的出現(xiàn)錯(cuò)誤 d.onclick = function (){ fn1(); fn2(); //fn1 fn2是屬性window的 實(shí)際上是這樣 window.fn1() window.fn2() } }
下面這種寫法沒有問題 但是給DOM樹額外增加了兩個(gè)變量
window.onload = function(){ var d = document.getElementById('school'); d.fn1 = function (){//fn1是d的屬性 最終this此時(shí)指向DOM對象 this.style.background = 'blue'; } d.fn2 = function (){//this此時(shí)指向DOM對象 this.style.background = 'red'; } //匿名函數(shù) 調(diào)用上面兩個(gè)函數(shù) d.onclick = function (){ this.fn1(); this.fn2(); } }
不在使用onclick
window.onload = function(){ var d = document.getElementById('school'); //達(dá)到了一次綁定兩個(gè)函數(shù) d.addEventListener('click',function () {alert('blue');this.style.background ='blue'}); d.addEventListener('click',function () {alert('red');this.style.background ='red'}); }
去除綁定 不能用匿名函數(shù) 匿名函數(shù) 當(dāng)時(shí)產(chǎn)生 當(dāng)時(shí)消失
var fn1 = function () {alert('blue');this.style.background ='blue'}; var fn2 = function () {alert('red');this.style.background ='red'}; function adde(){ var d = document.getElementById('school'); d.addEventListener('click',fn1); d.addEventListener('click',fn2); } function reme(){ var d = document.getElementById('school'); //d.removeEventListener('click',fn1);//只剩fn1 d.removeEventListener('click',fn2); }
在IE下第三種綁定事件的方法
<div id="school"> </div> <input type="button" value="加事件" onclick="adde();"> <input type="button" value="減事件" onclick="reme();">
var fn1 = function () {alert('blue');this.style.background ='blue'}; var fn2 = function () {alert('red');this.style.background ='red'}; function adde(){ var d = document.getElementById('school'); // IE6,7是后綁定的事件先發(fā)生 d.attachEvent('onclick',fn1); d.attachEvent('onclick',fn2); //fn2先發(fā)生 } function reme(){ var d = document.getElementById('school'); //d.deltachEvent('click',fn1);//只剩fn1 d.deltachEvent('click',fn2); }
總結(jié)
以上就是JavaScript中綁定事件與去除綁定的三種方式,希望本文的內(nèi)容對大家學(xué)習(xí)或者使用Javascript能有所幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- JS中動(dòng)態(tài)添加事件(綁定事件)的代碼
- Javascript 事件流和事件綁定
- JavaScript給按鈕綁定點(diǎn)擊事件(onclick)的方法
- js創(chuàng)建一個(gè)input數(shù)組并綁定click事件的方法
- js移除事件 js綁定事件實(shí)例應(yīng)用
- javascript事件委托的方式綁定詳解
- javascript attachEvent綁定多個(gè)事件執(zhí)行順序問題
- Chrome擴(kuò)展頁面動(dòng)態(tài)綁定JS事件提示錯(cuò)誤
- js 綁定帶參數(shù)的事件以及手動(dòng)觸發(fā)事件
- JavaScript 事件屬性綁定帶參數(shù)的函數(shù)
相關(guān)文章
前端CryptoJS加密、后端JAVA解密代碼實(shí)現(xiàn)參考
這篇文章主要介紹了前端CryptoJS加密、后端JAVA解密代碼實(shí)現(xiàn)參考,需要的朋友可以參考下2023-12-12使用window.prompt()實(shí)現(xiàn)彈出用戶輸入的對話框
window對象的最后一種對話框是提示對話框,它顯示了預(yù)先設(shè)置的信息并提供文本域供用戶輸入應(yīng)答。它包括兩個(gè)按鈕,即Cancel和Ok,允許用戶用兩個(gè)相反的期望值來關(guān)閉這個(gè)對話框:取消整個(gè)操作或接收輸入到對話框中的文本2015-04-04詳解Javascript動(dòng)態(tài)操作CSS
本文我們會討論如何通過 JavaScript 在運(yùn)行時(shí)操作 CSS,從而動(dòng)態(tài)地更新應(yīng)用到我們的元素上的式樣。本文所用的技術(shù)是我們已經(jīng)看到過的,但在利用 CSS DOM 來進(jìn)行操作的時(shí)候還需要注意幾個(gè)特殊點(diǎn)。2014-12-12javascript數(shù)組常見操作方法實(shí)例總結(jié)【連接、添加、刪除、去重、排序等】
這篇文章主要介紹了javascript數(shù)組常見操作方法,結(jié)合實(shí)例形式總結(jié)分析了javascript數(shù)組的連接、添加、刪除、去重、排序等操作,代碼注釋附帶較為詳細(xì)的說明,需要的朋友可以參考下2019-06-06Canvas實(shí)現(xiàn)動(dòng)態(tài)的雪花效果
本文主要分享Canvas實(shí)現(xiàn)動(dòng)態(tài)的雪花效果的示例代碼。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02layui checkbox默認(rèn)選中,獲取選中值,清空所有選中項(xiàng)的例子
今天小編就為大家分享一篇layui checkbox默認(rèn)選中,獲取選中值,清空所有選中項(xiàng)的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09