为了账号安全,请及时绑定邮箱和手机立即绑定

关于this的使用疑问

<!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 回答

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

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

同问啊啊

0 回复 有任何疑惑可以回复我~

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

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

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       469022    人
  • 解答问题       22582    个

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

进入课程

关于this的使用疑问

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号