亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

事件點擊for循環時的匿名函數問題

事件點擊for循環時的匿名函數問題

bengbengbeng 2016-09-06 17:11:52
var mainMenu = document.getElementById("mainMenu").getElementsByTagName("li");???for(var i = 0; i < 5; i++){ mainMenu[i].onclick= (function(num) { ? ? ? console.log(num); ? })(i);為什么我還沒有點擊,一打開網頁后臺就打印了所有i值??求各位大神幫忙解答一下,萬分感謝
查看完整描述

4 回答

已采納
?
慕少1338687

TA貢獻9條經驗 獲得超3個贊

這是用閉包的方式寫的,有點繞,你可以用this.index寫

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

mainMenu[i].onclick = (function(num){

??

? ? return function(){

? ? console.log(num);

? ? ??

? ? };

? })(i);


}


查看完整回答
3 反對 回復 2016-09-06
?
OlderSkee

TA貢獻123條經驗 獲得超103個贊

(function(){})(i)是個自執行函數 當然是網頁一打開就執行了咯。

函數體改成這樣就可以實現 點哪個li打印哪個li

for(var i = 0; i < 5; i++) {
? ?mainMenu[i].index = i;
? ?mainMenu[i].onclick = function () {
? ? ? ?console.log(this.index);
? ?};
}


查看完整回答
2 反對 回復 2016-09-07
?
Sexyme

TA貢獻3條經驗 獲得超2個贊

你認真看看,你給onclick事件綁定的是什么。

查看完整回答
1 反對 回復 2016-09-07
  • bengbengbeng
    bengbengbeng
    當初不知道自執行函數會一打開頁面就執行。。。。謝謝你們的回答。。。
?
qq_sU_4

TA貢獻30條經驗 獲得超6個贊

你是要獲取點擊當前的值嗎?


查看完整回答
1 反對 回復 2016-09-06
  • bengbengbeng
    bengbengbeng
    恩,一開始就是想把i值傳過去,現在用閉包解決了,謝謝你們的回答
  • 4 回答
  • 0 關注
  • 1911 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號