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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

循環(huán)問(wèn)題中索引求解

循環(huán)問(wèn)題中索引求解

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 = "on";? ? ? ? ? ? ? ? ? ? ?oDivs[this.index].className = "";? ? ? ? ? ? ? ? ?}? ? ? ? ? ? ?};為什么要用到索引?直接這樣為什么不行?for(var i= 0,len = oLis.length;i<len;i++){? ? ? ? ? ? ? ? ?oLis[i].onclick = function() {? ? ? ? ? ? ? ? ? ? ?for(var n= 0;n<len;n++){? ? ? ? ? ? ? ? ? ? ? ? ?oLis[n].className = "";? ? ? ? ? ? ? ? ? ? ? ? ?oDivs[n].className = "hide";? ? ? ? ? ? ? ? ? ? ?}? ? ? ? ? ? ? ? ? ? ?this.className = "on";? ? ? ? ? ? ? ? ? ? ?oDivs[i].className = "";? ? ? ? ? ? ? ? ?}? ? ? ? ? ? ?};
查看完整描述

1 回答

?
堂堂堂堂糖糖糖童鞋

TA貢獻(xiàn)101條經(jīng)驗(yàn) 獲得超58個(gè)贊

你可以自己嘗試分析一下執(zhí)行過(guò)程。
這里我說(shuō)一下,先進(jìn)行遍歷,同時(shí)為oLis[i]綁定點(diǎn)擊事件監(jiān)聽(tīng),
然而,for循環(huán)執(zhí)行完畢后,點(diǎn)擊事件并未出發(fā),而i的值變?yōu)閛Lis.length,因?yàn)閕為全局作用域變量

當(dāng)我們觸發(fā)點(diǎn)擊事件時(shí),執(zhí)行回調(diào)函數(shù),此時(shí)是執(zhí)行的是

oLis[i].onclick?=?function()?{
????//此時(shí)i已經(jīng)變?yōu)榱薿Lis.length
?????oDivs[oLis.length].className?=?"";
},

所以,需要保存當(dāng)前遍歷添加監(jiān)聽(tīng)元素的下標(biāo)到元素的index屬性中,方便在之后查找到對(duì)應(yīng)得元素。

可以這樣寫:

for(var?i=?0,len?=?oLis.length;i<len;i++){
??????(function(i){//IIFC(即時(shí)執(zhí)行函數(shù),并隔離i的作用域)
???????????oLis[i].onclick?=?function()?{
?????????????????????for(var?n=?0;n<len;n++){
?????????????????????????oLis[n].className?=?"";
?????????????????????????oDivs[n].className?=?"hide";
?????????????????????}
?????????????????????this.className?=?"on";
?????????????????????oDivs[i].className?=?"";
?????????????????}
??????})(i)
?};

ES6的話:

for(let?i=?0,len?=?oLis.length;i<len;i++){//塊級(jí)作用域聲明let,存在兼容性,了解即可
???????oLis[i].onclick?=?function()?{
????????????for(var?n=?0;n<len;n++){
?????????????????oLis[n].className?=?"";
?????????????????oDivs[n].className?=?"hide";
?????????????}
?????????????this.className?=?"on";
?????????????oDivs[i].className?=?"";
????????}
?};


查看完整回答
反對(duì) 回復(fù) 2016-10-12
  • 1 回答
  • 0 關(guān)注
  • 1117 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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