关于this的使用疑问

来源:10-1 编程挑战

Tyler_me

2016-11-17 09:35

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
<style type = "text/css">
    *{margin:0; padding:0; font:normal 12px "微软雅黑";}
ul{list-style-type: none;}
#tablelist{width:275px;
height:155px;
margin:20px auto;
}
#tablelist #ul1{border-bottom: 2px solid #8B4517;
height:32px;}
#tablelist #ul1 li{display:inline-block;
width:60px;
height:30px;
line-height:30px;
margin-left:3px;
border:1px solid #999;
border-bottom:none;
text-align:center;
}
#tablelist #ul1 li:hover{cursor:pointer;}
  //#ul1 li:hover{cursor:pointer;}
#tablelist #ul1 li.active{border-top:2px solid #8B4517;
border-bottom:2px solid #FFF;
}
#tablelist div{border:1px solid #999;
border-top:none;
}
#tablelist div ul li{height:30px;
line-height:30px;
text-indent:8px;
}
.hide{display:none;}
.show{display:block;}
</style>
<script type = "text/javascript">
window.onload = function(){
var oul = document.getElementById("ul1");
var aul = oul.getElementsByTagName("li");
var oDiv = document.getElementById("tablelist");
var aDiv = oDiv.getElementsByTagName("div");
for (var i = 0;i < aul.length;i++){
aul[i].index = i;
aul[i].onmouseover = function(){
for(var n = 0;n < aul.length;n++){
aul[n].className = "";
}
this.className = "active";
for(var j = 0;j < aDiv.length;j++){
aDiv[j].className = "hide";
}
aDiv[this.index].className = "show";
}
}
}
</script>
</head>
<body>
<div id="tablelist">
<ul id="ul1">
    <li class="active">房产</li>
        <li>家居</li>
        <li>二手房</li>
    </ul>
    
    <div class= "">
    <ul>
            <li>275万购昌平邻铁三居 总价20万买一居</li>
            <li>200万内购五环三居 140万安家东三环</li>
            <li>北京首现零首付楼盘 53万购东5环50平</li>
        </ul>
    </div>
    
    <div class= "hide">
    <ul>
            <li>40平出租屋大改造 美少女的混搭小窝</li>
            <li>经典清新简欧爱家 90平老房焕发新</li>
            <li>新中式的酷色温情 66平撞色活泼家居</li>
        </ul>
    </div>
    <div class= "hide">
    <ul>
            <li>通州豪华3居260万 二环稀缺2居250w甩</li>
            <li>西3环通透2居290万 130万2居限量抢购</li>
            <li>黄城根小学学区仅260万 121平70万抛!</li>
        </ul>
    </div>
</div>
</body>
</html>

这段代码中,javascript代码中的一句aul[i].index = i;为什么有存在的必要,如果删掉只有下面的大块div就不显示了,但是我不理解这是为什么啊,求解

写回答 关注

4回答

  • qq_请勿投食_0
    2016-12-01 16:16:27

    因为在最后要执行   aDiv[this.index].className = "show" 的时候 给数组一个准确的下标 也就是 aDiv[?] 

    问号的部分应该为一个数字。使用 this 返回得到的是一个 数组名 也就是 oLI[i] ,所以建立和i的联系。 oLi[i].index=i; 写成oLi[i].anything=i; 都可以

  • qq_凉风有信丶_03837837
    2016-11-25 21:35:37

    i是索引值,而au[i].index=i,就是给index赋值,这里用什么都可以,index就是个变量,至于为什么要用,因为下面要用到this.index,也就是当前发生事件的对象的索引值,这里就是用这个来确定应该哪一个div显示

  • WinXXP3952812
    2016-11-23 21:20:32

    同问啊啊

  • Jathy
    2016-11-17 11:46:41

    var oul = document.getElementById("ul1");

    var aul = oul.getElementsByTagName("li");

    //oul.get...是为了定义className作用对象为id为tablelist下的所有文本div

JavaScript进阶篇

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

468782 学习 · 22507 问题

查看课程

相似问题