下面的js代码中for循环中的代码块不是很理解,求指教



<!DOCTYPE html>
<html>
<head lang="en">
    <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(){
             //获取最外层div节点
             var oTab = document.getElementById("tabs");
            //获取第一个ul节点
             var oUl = oTab.getElementsByTagName("ul")[0];
            //获取ul节点中的所有li节点
             var oLis = oUl.getElementsByTagName("li");
            //获取所有最外层div中的所有div节点
             var oDivs= oTab.getElementsByTagName("div");

             for(var i= 0;i<oLis.length;i++){
                 oLis[i].index = i; //这一句代码起什么作用?
                 oLis[i].onclick = function() {
                     for(var n= 0;n<oLis.length;n++){  
                         oLis[n].className = "";
                         oDivs[n].className = "hide";
                     }
                     this.className = "on";
                     oDivs[this.index].className = "";
                 }
             };
         }
    </script>

</head>
<body>
<div id="tabs">
    <ul>
        <li class="on">房产</li>
        <li>家居</li>
        <li>二手房</li>
    </ul>
    <div>
        275万购昌平邻铁三居 总价20万买一居<br>
        200万内购五环三居 140万安家东三环<br>
        北京首现零首付楼盘 53万购东5环50平<br>
        京楼盘直降5000 中信府 公园楼王现房<br>
    </div>
    <div class="hide">
        40平出租屋大改造 美少女的混搭小窝<br>
        经典清新简欧爱家 90平老房焕发新生<br>
        新中式的酷色温情 66平撞色活泼家居<br>
        瓷砖就像选好老婆 卫生间烟道的设计<br>

    </div>
    <div class="hide">
        通州豪华3居260万 二环稀缺2居250w甩<br>
        西3环通透2居290万 130万2居限量抢购<br>
        黄城根小学学区仅260万 121平70万抛!<br>
        独家别墅280万 苏州桥2居优惠价248万<br>

    </div>
</div>

</body>
</html>

其中的for循环语句不是很理解,代码如下:

for(var i= 0;i<oLis.length;i++){
                 oLis[i].index = i; //这一句代码起什么作用?
                 oLis[i].onclick = function() {
                     for(var n= 0;n<oLis.length;n++){  
                         oLis[n].className = "";
                         oDivs[n].className = "hide";
                     }
                     this.className = "on";
                     oDivs[this.index].className = "";
                 }
             };

for循环中的代码块语句作用不是很理解,请大神指教。
是点击事件发生时将所有的li元素样式设置为 非 on类样式,所有的div元素设置为 hide类样式吗?然后再将点击事件的当前对象li设置为on类样式,当前对应索引的div样式设置为非hide类样式吗?

阅读 1.8k
3 个回答

赋值,为了下面这个,如果用oDiv[i]应该是不起作用的

oDiv[this.index]

通过i来指定对应的标签

这里为li标签对象增加index属性,用于下面当点击li标签时,指定对应位置的div块展现出。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题