循環的理解~2

<ul>閉包

    <li>產品1</li>函數

    <li>產品2</li>this

    <li>產品3</li>spa

</ul>事件

----------------華麗麗的js分隔線ci

目標是點擊li就跳出提示框提示當前點擊的是第幾個產品,很天然的思路是get

For(var i=0;i<liArr.length;i++){產品

liArr[i].onclick=function(){io

  Alert(liArr[i].innerHTML)function

}

可是

事件和函數只是綁定關係

循環已經結束,但是函數並無觸發

函數觸發時,循環已結束

會報錯,由於i=4;

那麼,如何留住i的值呢

1. 

    var liArr=getElementsByTagName="li";

 

            for(var i=0;i<liArr.length;i++){

            liArr[i].index=i;//在這裏標記下i的值

                liArr[i].onclick=function(){

                    alert(this.index);

                }

            }

2.        var liArr=getElementsByTagName="li";

            for(var i=0;i<liArr.length;i++){

            liArr[i].onclick=function(){

                this.index=true;//用來標記i值

                for(var j=0;j<liArr.length;j++){

                    if(liArr[j].index){用bool值,這樣寫就能夠了

                        delete this.index;//刪原來賦予的true

                        alert(j);

                        break;

                     }                }

            }

3.經過閉包和匿名函數運行來實現

Var liArr=getElementsByTagName=li;

for(var i=0;i<liArr.length;i++){

liArr[i].onclick=(function(k){

return function(){

alert(k)

}

})(i);

}

相關文章
相關標籤/搜索