土豪码农
2016-11-13 22:11
本来是已经完成的了,完成后觉得可以简单一点,于是就换了一些js代码。
var p =document.getElementsByTagName("p");
var li=document.getElementsByTagName("li");
for(var i=0;i<3;i++){
li[i].onmouseover=function(){
p[i].style.display="block";
li[i].style.borderTop="2px red solid";
li[i].style.borderBottom="2px white solid";
}
li[i].onmouseout=function(){
p[i].style.display="none";
li[i].style.borderTop="black 1px solid";
li[i].style.borderBottom="1px blank solid";
}
}
主要就这一块,就换了这一块,其他应该没啥问题。为什么就运行不了呢,求大牛指导,下面是完整的代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>实践题 - 选项卡</title>
<style type="text/css">
/* CSS样式制作 */
ul{
list-style-type:none;
position:relative;
z-index:100;
}
li{
border:1px solid ;
width:60px;
padding:5px;
margin:0px 3px;
text-align:center;
float:right;
}
p{
width:187.5px;
float:right;
border:1px solid blue;
padding:20px;
margin-top:0px;
display:none;
border-top:2px solid red;
position:absolute;
right:83px;
top:46px;
}
div{
width:280px;
}
</style>
<script type="text/javascript">
var p =document.getElementsByTagName("p");
var li=document.getElementsByTagName("li");
for(var i=0;i<3;i++){
li[i].onmouseover=function(){
p[i].style.display="block";
li[i].style.borderTop="2px red solid";
li[i].style.borderBottom="2px white solid";
}
li[i].onmouseout=function(){
p[i].style.display="none";
li[i].style.borderTop="black 1px solid";
li[i].style.borderBottom="1px blank solid";
}
}
// JS实现选项卡切换
</script>
</head>
<body>
<!-- HTML页面布局 -->
<div>
<ul>
<li>房产</li>
<li>家居</li>
<li>二手房</li>
</ul>
<p>275万购昌平邻铁三居 总价20万买一居
200万内购五环三居 140万安家东三环
北京首现零首付楼盘 53万购东5环50平
京楼盘直降5000 中信府 公园楼王现房</p>
<p>40平出租屋大改造 美少女的混搭小窝
经典清新简欧爱家 90平老房焕发新生
新中式的酷色温情 66平撞色活泼家居
瓷砖就像选好老婆 卫生间烟道的设计</p>
<p>
通州豪华3居260万 二环稀缺2居250w甩
西3环通透2居290万 130万2居限量抢购
黄城根小学学区仅260万 121平70万抛!
独家别墅280万 苏州桥2居优惠价248万</p>
</div>
</body>
</html>
代码:
for(var i=0;i<3;i++){ li[i].index=i; li[i].onmouseover=function(){ p[this.index].style.display="block"; li[this.index].style.borderTop="2px red solid"; li[this.index].style.borderBottom="2px white solid"; } li[i].onmouseout=function(){ p[this.index].style.display="none"; li[this.index].style.borderTop="black 1px solid"; li[this.index].style.borderBottom="1px blank solid"; } }
因为页面加载完的时候已经for循环完毕,而事件还没触发,因此i值在触发事件的时候已经是定值,这里是3,所以无论li[3]还是p[3]都是不存在的,这里要用每一个li(li[i])的index属性来保存对应的每一个i,事件函数内再去调用
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题