我要吃冰激凌
2016-03-15 16:12
为什么要用oLis[i].index = i;?oLis[i].index和i的值在循环过程中一直保持一致的啊,为什么还要写这样一条语句
oDivs[this.index].className = "";是清除上面那个for循环里赋给它的"hide"还是恢复原来的样式
this和this.index指的事对应的for循环里的oLis[i]吗
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>实践题 - 选项卡</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 #aaaaaa;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> <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 = ""; } }; } </script> </head> <body> <div id="tabs"> <ul> <li>房产</li> <li>家居</li> <li>二手房</li> </ul> <div> 275万购昌平邻铁三居 总价20万买一居<br> 200万内购五环三居 140万安家东三环<br> 北京首现零首付楼盘 53万购东5环50平<br> 京楼盘直降5000 中信府 公园楼王现房<br> </div> <div> 40平出租屋大改造 美少女的混搭小窝<br> 经典清新简欧爱家 90平老房焕发新生<br> 新中式的酷色温情 66平撞色活泼家居<br> 瓷砖就像选好老婆 卫生间烟道的设计<br> </div> <div> 通州豪华3居260万 二环稀缺2居250w甩<br> 西3环通透2居290万 130万2居限量抢购<br> 黄城根小学学区仅260万 121平70万抛!<br> 独家别墅280万 苏州桥2居优惠价248万<br> </div> </div> </body> </html>
index你可以理解成是你自己定义的一个变量, 而i的值并没有什么变化而是oLis.length;你可以这样理解,for只是把最后一个len = oLis.length;i<len; 只是这句话 ,并没有保存其他的值,这个时候用index来记录一下遍历的次数,
oLis[n].className = ""; = ""! = ""! 等于空的字符串,
this的数据类型是obj,是个对象!是当前对象!而this.inedx值得是当前对象的下标【i】;
指的是你点击的li对应的在数组中的编号
oDivs[this.index].className = "";是清除上面那个for循环里赋给它的"hide",你点击那项对应的内容就出现了
oLis[i].index = i是先通过index给菜单栏的三项编号,比如你点击菜单栏第二项 那么就要通过this.index来得到此时点击的是第2个菜单项 然后通过oDivs[this.index]来设置它的className
JavaScript进阶篇
468192 学习 · 21891 问题
相似问题