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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

循環(huá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個贊

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

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

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

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

可以這樣寫:

for(var?i=?0,len?=?oLis.length;i<len;i++){
??????(function(i){//IIFC(即時執(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++){//塊級作用域聲明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?=?"";
????????}
?};


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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