最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

為什么把this換成oList[i]就不行?

for(var i= 0,len = oLis.length;i<len;i++)

? ? {

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

? ? ? oLis[i].onclick = function()?

? ? ? ?{

? ? ? ? ?for(var n= 0;n<len;n++)

? ? ? ? ?{

? ? ? ? ? ? oLis[n].className = "";

? ? ? ? ? ? oDivs[n].className = "hide";

? ? ? ? ?}

? ? ? ? this.className = "li1";

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

? ? ? ?}

? ? };


正在回答

3 回答

? 因?yàn)轫撁嬉坏┘虞d完成就觸發(fā)onload事件,而onclick事件觸發(fā)之前,for(var i= 0,len = oLis.length;i<len;i++)這個(gè)循環(huán)已經(jīng)運(yùn)行完成了!oLis[i].onclick = function()這段代碼只是掛在那里(掛這個(gè)詞不怎么準(zhǔn)確,意思放在那里,等待onclick事件觸發(fā)),這時(shí)候的i=3.在 oLis[i].onclick = function()之前document.writeln(i)你會(huì)發(fā)現(xiàn)輸出012,說明循環(huán)已經(jīng)完成.
?? oLis[i].index = i 的作用只是在循環(huán)的過程中綁定下標(biāo)i(0 1 2)到oLis數(shù)組相應(yīng)元素oLis[0] oLis[1] oLis[2]的index變量上(例如oLis[0].index = 0;oLis[1].index =1;oLis[2].index=2)

?? 當(dāng)onclick事件觸發(fā)的時(shí)候,this.className中的this就是當(dāng)前鼠標(biāo)所在的元素(例如家居), 同時(shí)oDivs[this.index]會(huì)獲取到家居所對(duì)應(yīng)的oLis數(shù)組中的index值(這里是1,因?yàn)槲覀円呀?jīng)在完成的循環(huán)中將oLis[1]=1 了),而如果換成oLis[i]則因?yàn)閕===3(恒等于3),所以oLis[i]===oLis[3],當(dāng)然會(huì)出錯(cuò)了!建議好好看一下JS的閉包原理和事件機(jī)制!


1 回復(fù) 有任何疑惑可以回復(fù)我~

按理說 OLis在windoe.onload{}內(nèi)部是全局變量

應(yīng)該在內(nèi)層函數(shù)中也能用啊

0 回復(fù) 有任何疑惑可以回復(fù)我~

this指當(dāng)前元素,而在循環(huán)體中oLis[i]有一個(gè)事件,而這個(gè)事件調(diào)用的函數(shù)中并沒有參數(shù),所以會(huì)出現(xiàn)這樣的結(jié)果,如果想在函數(shù)調(diào)用某個(gè)變量的時(shí)候,要不就是在該函數(shù)中有這個(gè)變量,要不就是將這個(gè)變量作為參數(shù)傳遞到函數(shù)中

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

thenger

哪像全局變量這類參數(shù)在函數(shù)體中如果沒有特別聲明也不能使用?
2015-02-21 回復(fù) 有任何疑惑可以回復(fù)我~
#2

Ambition_zl

不對(duì)吧,依你這么說 OLis[n]也沒定義,也不能用啊
2015-03-13 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

為什么把this換成oList[i]就不行?

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)