JavaScript點擊li顯示索引


  有一個ul,ul里面有幾個li,如果需要點擊li打印出此li對應的索引號該怎么做呢?

  最開始的想法是:

<ul>
    <li>春</li>
    <li>夏</li>
    <li>秋</li>
    <li>冬</li>
</ul>
<script type="text/javascript">
	var lis=document.getElementsByTagName("li");
	for (var i = 0; i < lis.length; i++) {
		lis[i].onclick=function(){
			console.log(i);
		}
	};
</script>

   結果發現點擊春、夏、秋、冬打印出來的都是4。

  原因分析:上面代碼中,變量i是var聲明的,在全局范圍內都有效。所以每一次循環,新的i值都會覆蓋舊值,導致最后輸出的是最后一輪的i的值。

  修改代碼如下:

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

   如此利用閉包發現可以達到需求,i作為參數傳遞給x,i不同,選定的li不同,從而綁定的click函數也不同。


免責聲明!

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



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