关于oLis[i].index = i;和oDivs[this.index].className = "";

来源:10-1 编程挑战

我要吃冰激凌

2016-03-15 16:12

  1. 为什么要用oLis[i].index = i;?oLis[i].index和i的值在循环过程中一直保持一致的啊,为什么还要写这样一条语句

  2. oDivs[this.index].className = "";是清除上面那个for循环里赋给它的"hide"还是恢复原来的样式

  3. 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>


写回答 关注

4回答

  • 孔大夫
    2017-08-25 08:47:31
    1. index你可以理解成是你自己定义的一个变量, 而i的值并没有什么变化而是oLis.length;你可以这样理解,for只是把最后一个len = oLis.length;i<len;  只是这句话 ,并没有保存其他的值,这个时候用index来记录一下遍历的次数,

    2.  oLis[n].className = ""; = ""! = ""!   等于空的字符串,

    3. this的数据类型是obj,是个对象!是当前对象!而this.inedx值得是当前对象的下标【i】;

  • 请叫我橙子蛋
    2016-03-16 14:50:11

    指的是你点击的li对应的在数组中的编号

  • 请叫我橙子蛋
    2016-03-16 14:47:54

    oDivs[this.index].className = "";是清除上面那个for循环里赋给它的"hide",你点击那项对应的内容就出现了


  • 慕斯卡3836492
    2016-03-15 18:27:19

    oLis[i].index = i是先通过index给菜单栏的三项编号,比如你点击菜单栏第二项 那么就要通过this.index来得到此时点击的是第2个菜单项 然后通过oDivs[this.index]来设置它的className

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468060 学习 · 21891 问题

查看课程

相似问题