问答详情
源自:10-1 编程挑战

this.className = "active"和aLi[i].className = "active";的区别

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>实践题 - 选项卡</title>
    <style type="text/css">
     /* CSS样式制作 */  
*{margin:0;padding:0;font:normal 12px "微软雅黑";color:#000000;}
ul{list-style-type: none;}
    a{text-decoration: none;}

#tab-list{width: 275px;height:190px;margin: 20px auto;}
    #ul1{border-bottom: 2px solid #842;height: 32px;}
/*#ul1 li{margin-left:5px;padding:0 10px;float:left;line-height:30px;border:1px solid #bbf;}*/
    #ul1 li{display: inline-block;width: 60px;line-height: 30px;text-align: center;border: 1px solid #999;border-bottom: none;margin-left: 5px;}
#ul1 li:hover{cursor: pointer;}
#ul1 li.active{border-top:2px solid #900;border-bottom:2px solid #FFFFFF;}

    #tab-list div{border:1px solid #bbf;height:150px;border-top:none;}
#tab-list div li{height:30px;line-height:30px;text-indent:8px}
.show{display: block;}.hide{display:none}
    </style>
    <script type="text/javascript">
         
    // JS实现选项卡切换
window.onload = function(){
var aLi = document.getElementById("ul1").getElementsByTagName("li");
var aDiv = document.getElementById("tab-list").getElementsByTagName("div");
for(var i=0;i<aLi.length;i++){
aLi[i].index = i;
aLi[i].onmouseover = function(){
for(var i=0;i<aLi.length;i++){
aLi[i].className = "";
aDiv[i].className = "hide";
}
this.className = "active";
aDiv[this.index].className = "show";
}
}
}
//  aLi[i].index = i;不加不会显示
// this.className = "active";tab[i].className = "active";区别

    </script>
 
</head>
<body>
<!-- HTML页面布局 -->
<div id="tab-list">
    <ul id="ul1">
        <li id="tag1" onclick="fc()">房产</li><li id="tag2" onclick="jj()">家居</li id="tag3" onclick="esf()"><li>二手房</li>
    </ul>
    <div id="first">
        <ul>
            <li><a href="javascript:;">275万购昌平邻铁三居 总价20万买一居</a></li>
            <li><a href="javascript:;">200万内购五环三居 140万安家东三环</a></li>
            <li><a href="javascript:;">北京首现零首付楼盘 53万购东5环50平</a></li>
            <li><a href="javascript:;">京楼盘直降5000 中信府 公园楼王现房</a></li>
        </ul>
    </div>
    <div id="second">
        <ul>
            <li><a href="javascript:;">40平出租屋大改造 美少女的混搭小窝</a></li>
            <li><a href="javascript:;">经典清新简欧爱家 90平老房焕发新生</a></li>
            <li><a href="javascript:;">新中式的酷色温情 66平撞色活泼家居</a></li>
            <li><a href="javascript:;">瓷砖就像选好老婆 卫生间烟道的设计</a></li>
        </ul>
    </div>
    <div id="third">
        <ul>
            <li><a href="javascript:;">通州豪华3居260万 二环稀缺2居250w甩</a></li>
            <li><a href="javascript:;">西3环通透2居290万 130万2居限量抢购</a></li>
            <li><a href="javascript:;">黄城根小学学区仅260万 121平70万抛!</a></li>
            <li><a href="javascript:;">独家别墅280万 苏州桥2居优惠价248万</a></li>
        </ul>
    </div>
</div>
</body>
</html>

有2个问题

  1. this.className = "active"换成aLi[i].className = "active";为什么就没有用。

  2. aLi[i].index = i;不加,把aDiv[this.index].className = "show";换成aDiv[i].className = "show"就没有用。

~~~~~~~~~~~~~~~~~~~求大神~~~~~~~~~~~~~~~~~~~

提问者:过去丶 2016-11-30 12:19

个回答

  • 老友丶
    2016-11-30 15:23:38
    已采纳

    window.onload = function(){

    var aLi = document.getElementById("ul1").getElementsByTagName("li");

    var aDiv = document.getElementById("tab-list").getElementsByTagName("div");

    for(var i=0;i<aLi.length;i++){

    aLi[i].index = i;

    aLi[i].onclick = function(){

    for(var i=0;i<aLi.length;i++){

    aLi[i].className = "";

    aDiv[i].className = "hide";

    }

    alert(i);

    //aLi[i].className = "active";

    //aDiv[aLi[i].index].className = "show";

    }

    }

    }


    你这样显示一下i,无论怎样都是3,因为经过了for循环,而aLi[i]=aLi[3]是不存在的,所以有问题。

    而this值得是onclick前面的那个aLi[i];

    至于index的作用按着这个理解就是用来同步却换的。