求助大神,有地方不是很懂
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>無標(biāo)題文檔</title>
<style type="text/css">
*{padding:0px;margin:0px;font:12px normal "microsoft yahei"}
#tabs{width:290px;padding:5px;height:150px;margin:20px;}
#tabs ul{list-style:none;display:block;height:30px;line-height:30px; border-bottom:2px saddlebrown solid;}
#tabs ul li{background:#fff;cursor:pointer;float:left;list-style:none;height:28px;line-height:28px;margin:0px 3px;border:1px solid #aaa;border-bottom:none;display:inline-block;width:60px;text-align:center;}
#tabs ul li.on{border-top:2px solid saddlebrown;border-bottom:2px solid #fff;}
#tabs div{height:120px;line-height:25px;border:1px solid #336699; border-top:none;padding:5px;}
.hide{display:none;}
</style>
</head>
<body>
<div id="tabs">
<ul>
<li class="on">房產(chǎn)</li>
<li>家居</li>
<li>二手房</li>
</ul>
<div>
275萬購昌平鄰鐵三居 總價20萬買一居<br>
? ? 200萬內(nèi)購五環(huán)三居 140萬安家東三環(huán)<br>
? ? 北京首現(xiàn)零首付樓盤 53萬購東5環(huán)50平<br>
? ? 京樓盤直降5000 中信府 公園樓王現(xiàn)房<br>
</div>
<div class="hide">
40平出租屋大改造 美少女的混搭小窩<br>
? ? ? 經(jīng)典清新簡歐愛家 90平老房煥發(fā)新生<br>
? ? ? 新中式的酷色溫情 66平撞色活潑家居<br>
? ? ? 瓷磚就像選好老婆 衛(wèi)生間煙道的設(shè)計<br>
</div>
<div class="hide">
通州豪華3居260萬 二環(huán)稀缺250w甩<br>
? ? ? 西3環(huán)通透2居290萬 130萬限量搶購<br>
? ? ? 黃城根小學(xué)學(xué)區(qū)僅260萬 12170萬拋!<br>
? ? ? 獨家別墅280萬 蘇州橋2居優(yōu)價248萬<br>
</div>
</div>
</body>
<script type="text/javascript">
window.onload=function(){
var oTab=document.getElementById("tabs");
var oUl=oTab.getElementsByTagName("ul")[0];
var olis=oUl.getElementsByTagName("li");
var oDivs=oTab.getElementsByTagName("div");
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="";
};
}
}
系統(tǒng)提供的這段javascript代碼中?olis[i].index=i;和oDivs[this.index].className="";不是很理解。后面的this.index 為什么不能用 i 代替
2018-08-26
var聲明的i 沒有塊級作用域 , 當(dāng)i的值發(fā)生變化時 ,無法在變量對象中存儲多個階段的值 , 所以變量對象在各個循環(huán)階段只產(chǎn)生一個i ,這個i隨著循環(huán)會不斷更新 .
事件是異步執(zhí)行的,事件驅(qū)動時(即函數(shù)調(diào)用),會去找事件綁定時(階段)的變量,發(fā)現(xiàn)不存在此階段的i變量,所以向后找到已經(jīng)更新的i , 導(dǎo)致結(jié)果發(fā)生錯亂 ; 利用添加obj.index屬性來保存各個階段的i變量來達到目的