本想給按鈕循環設定監聽事件,可是出現了只有最後一個按鈕有反應,或是直接報錯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中文網其他相關文章!