第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

為什么一定要用titles[i].id = i;然后用divs[this.id]去取到元素而不用divs[i]?

練習(xí)題中實(shí)測(cè),用divs[i]不行,而divs[this.id]就可以,不知道為啥

for(var i=0;i<titles.length;i++){
???????? titles[i].id = i;
???????? titles[i].onclick = function(){
??????????? //? alert(conts[this.id].style.display);
???????????? if(divs[this.id].style.display == "none"){
???????????????? divs[this.id].style.display = "block";
???????????? }else{
???????????????? divs[this.id].style.display = "none";
???????????? }
???????? }
???? }

正在回答

3 回答

因?yàn)閛nclick是事件綁定函數(shù),也就是說你的click事件發(fā)生的時(shí)候,局部變量i早就不存在了(undefined)。所以需要把i存入到titles的每個(gè)對(duì)象中,這樣當(dāng)你很久之后發(fā)生click事件時(shí),還是能讀取到正確的i的值。

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

CoolIsLife 提問者

非常感謝!
2015-04-02 回復(fù) 有任何疑惑可以回復(fù)我~
#2

CoolIsLife 提問者

是不是可以這樣理解,window.onload = function(){...}中,function里面的內(nèi)容在界面加載時(shí)就大部分已經(jīng)實(shí)例化了,即就加載這一次,而里面 *.onclick = function(){...}事件綁定函數(shù)只有在觸發(fā)事件的時(shí)候才去實(shí)例化,即以后只是會(huì)多次加載事件綁定函數(shù),而window.onload = function(){...}中的function不再加載,故i不存在,也就沒有意義了?
2015-04-02 回復(fù) 有任何疑惑可以回復(fù)我~
#3

用戶已禁用 回復(fù) CoolIsLife 提問者

大概就是這樣
2015-04-02 回復(fù) 有任何疑惑可以回復(fù)我~
#4

Sappho

你這樣說是不對(duì)的,不信alert(i)試試
2016-03-08 回復(fù) 有任何疑惑可以回復(fù)我~
#5

STRONG很壯不怕撞

非常感謝,同樣解決了我的困惑,看來對(duì)一些基本的概念理解的還不夠。
2016-04-19 回復(fù) 有任何疑惑可以回復(fù)我~
#6

STRONG很壯不怕撞 回復(fù) Sappho

我試過alert(i); 結(jié)果就是觸發(fā)每一個(gè)都彈出“3”,即循環(huán)執(zhí)行后的i 值,取值的時(shí)候是在事件觸發(fā)的時(shí)候,不是在綁定的時(shí)候,如果綁定后還有其他的操作改變了i 的值,那觸發(fā)的時(shí)候彈出的就是i 當(dāng)時(shí)的值。我覺得是這樣的……
2016-04-19 回復(fù) 有任何疑惑可以回復(fù)我~
#7

Jeoop

那請(qǐng)問有什么辦法可以解決這個(gè)問題呢?如果給元素添加id的話不會(huì)產(chǎn)生污染嘛?
2017-09-24 回復(fù) 有任何疑惑可以回復(fù)我~
查看4條回復(fù)

因?yàn)閛nClick不是立即執(zhí)行的,實(shí)際上當(dāng)事件處理函數(shù)執(zhí)行時(shí),這里如果使用i的話會(huì)引用同一個(gè)i,而且這個(gè)i值等于for循環(huán)結(jié)束時(shí)i的值。

實(shí)際上這里起的效果跟閉包是一樣的,具體效果是讓每一個(gè)事件處理函數(shù)都有屬于它自身的i值,而不是引用同一個(gè)i。

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

在Javascript的事件函數(shù)的this指針是指向調(diào)用它的元素。比如:

<div id="test"></div>

div1.onclick = function( ) {

????alert(this.id); ? //輸出test

};

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

舉報(bào)

0/150
提交
取消

為什么一定要用titles[i].id = i;然后用divs[this.id]去取到元素而不用divs[i]?

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

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

幫助反饋 APP下載

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

公眾號(hào)

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