索引問題,求各位大神賜教
?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="",這樣就顯示不出來???為什么就必須有這個(gè)賦值過程,不都一樣用的i的值嗎?this作用到底是怎么樣的?
2017-03-10
因?yàn)槟愕?for 循環(huán)和?onclick 點(diǎn)擊事件是異步進(jìn)行的,也就是說你的for執(zhí)行完畢了之后你才去點(diǎn)擊,此時(shí)你的 i 都已經(jīng)到了最后一個(gè)值了,所以為了解決這個(gè)問題,就是在 for 循環(huán)執(zhí)行的過程中用一個(gè)屬性把變化的 i 先保存起來,就是你寫的?myLi[i].index=i; 。。。。不然你取到的 i 都是?myLi.length-1;