使用for循環添加點擊事件時,獲取i值的方法


比如頁面上有一個ul,數個li,現在給li添加點擊事件。

    var li = document.getElementsByTagName("li");
    for(var i = 0; i < li.length; i++) {
	li[i].addEventListener("click",function () {
	console.log(i);
	})
  }            

但是,這樣寫之后我們發現,點擊任何一個li,打印的值都為5,這是因為閉包中共用i值,而i的值由於執行for循環,都變為了5

為了正常顯示i值,我們可以使用如下方法:

 

 for (var i = 0; i < lis.length; i++) {
    (function(arg){
        li[arg].onclick = function(){
            console.log(arg);
        };
    })(i)   
 }

  

類似於這樣

			var li = document.getElementsByTagName("li");
			for(var i = 0; i < li.length; i++) {
				getConsole(i);
			}
			
			
			function getConsole(i){
				li[i].addEventListener("click", function() {
					console.log(i);
				});
				
			}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM