在編寫js的時候我們經常會遇到要對一系列元素進行事件繫結,迴圈對元素的事件進行賦值,在這個過程中我們會遇到乙個問題,那就每個元素事件執行的時候變數怎麼都是相同的值。
這裡涉及到變數的作用域的問題,可以用閉包來解決這個問題。
這裡舉個簡單的列子來說明:
我們來給這些li新增乙個onclick事件,彈出li是第幾條資料
var list = document.getelementbyid("uldemo").getelementsbytagname("li");for (var i = 0; i < list.length; i++)
}
結果彈出的都是第6條資料,這裡的onclick函式中的變數i指向的記憶體位址,經過迴圈之後i變成了5,所有的li的點選事件都在同乙個作用域中,我們可以通過閉包把i的作用域獨立出來
var list = document.getelementbyid("uldemo").getelementsbytagname("li");for (var i = 0; i < list.length; i++) ;
})(i);
}
其他寫法
for (var i = 0; i < list.length; i++) ;};addclick(li, i);
}
for (var i = 0; i < list.length; i++) ;})(li,i);
}
js動態繫結事件
在頁面中使用動態繫結事件,我們很容易就想到了onpropertychange oninput和onchange。首先說下這三個區別。onchange 當前屬性值發生改變,並且有滑鼠或者鍵盤觸發,並失去焦點。onpropertychange 屬性值發生改變。但是他是ie專屬事件,並在ie9開始棄用,i...
js事件on動態繫結資料,繫結多個事件
一.on clcik 與 clcik 方法的區別 on clcik 事件委託機制 在body元素上繫結click事件處理函式handler,如果這個click事件是由其後代的p元素觸發的,就執行handler document.body on click p handler 事件委託機制就是,我們不...
JS事件繫結的區別
addeventlistener attachevent 相同點 都可以為元素繫結事件 不同點 1.方法名不同 2.引數個數不一樣 addeventlistener 三個引數 attachevent兩個引數 3.addeventlistener 支援谷歌,火狐,ie11支援,ie8不支援 attac...