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

為了賬號安全,請及時綁定郵箱和手機立即綁定

索引問題,求各位大神賜教

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

? ? ? ? ? ?myLi[i].index=i;

? ? ? ? ? ? myLi[i].onclick=function(){

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

? ? ? ? ? ? ? ? ? ? myLi[j].className="";

? ? ? ? ? ? ? ? ? ? myDiv[j].className="second";

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? this.className="firstMenu";

? ? ? ? ? ? ? ? myDiv[this.index].className="";

? ? ? ? ? ? ? ? //為什么必須把i賦值給myli[i].index????

? ? ? ? ? ? ? ? //為什么不能直接myDiv[i]???this作用到底是怎么樣的

? ? ? ? ? ? }

? ? ? ? }

?為什么這里必須把i賦值給myli[i].index?為什么不能直接myDiv[i].className="",這樣就顯示不出來???為什么就必須有這個賦值過程,不都一樣用的i的值嗎?this作用到底是怎么樣的?


正在回答

1 回答

因為你的 for 循環和?onclick 點擊事件是異步進行的,也就是說你的for執行完畢了之后你才去點擊,此時你的 i 都已經到了最后一個值了,所以為了解決這個問題,就是在 for 循環執行的過程中用一個屬性把變化的 i 先保存起來,就是你寫的?myLi[i].index=i; 。。。。不然你取到的 i 都是?myLi.length-1;

7 回復 有任何疑惑可以回復我~
#1

qq_齊步走_1 提問者

非常感謝!
2017-03-13 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JavaScript進階篇
  • 參與學習       468832    人
  • 解答問題       22582    個

本課程從如何插入JS代碼開始,帶您進入網頁動態交互世界

進入課程

索引問題,求各位大神賜教

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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