首頁 >web前端 >js教程 >js給按鈕循環設定匿名函數的問題

js給按鈕循環設定匿名函數的問題

小云云
小云云原創
2017-12-06 15:09:481588瀏覽

本想給按鈕循環設定監聽事件,可是出現了只有最後一個按鈕有反應,或是直接報錯undefined##。 這裡是原先錯誤的寫法,給按鈕num_jia的onclick#設定匿名函數,匿名函數中的i會使用for迴圈結束時的i,為 3,所以會報undefined錯。

 

function a(){

for(var i=0;i<3;i++) { 

       num_jia[i] = document.getElementsByClassName('num-jia')[i];

        num_jia[i].onclick = function () {

   )#  #        }

}

}

 

上網查了一下,要想讓匿名函數記住各自的i,只需要用適當的閉包(可以存取獨立資料的函數),以下是改進,關於閉包的具體知識還請自行學習。

 

function a(){

for(var i=0;i<3;i++) {

       num_jia[i] = document. getElementsByClassName('num-jia')[i];

       ;(function (i2) {

               alert( num_jia[i2])

            }

        })(i);

}

}

 

我後來研究發現其實還有一種有名函數的完整寫法,其達到的效果是一樣的,還通俗易懂。

 

function a(){

for (var i=0;i<3;i++) {

       num_jia[i] = document.getElementsByClassName('num-jia')[i];

#doThings(i

##}

}

 

functiondoThings(i){

num_jia[i2].onclick= function () {

               alert(num_jia[i2])

##}

#}

| 。

相關推薦:

JS按鈕顏色切換效果的實作實例

JS按鈕新增背景音樂的實作程式碼

JS按鈕閃爍功能是如何實現的?

以上是js給按鈕循環設定匿名函數的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn