js動態迴圈繫結事件的變數問題

2022-07-17 09:27:14 字數 778 閱讀 2360

在編寫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...