鲜花牛奶
2017-07-24 13:57
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>实践题 - 选项卡</title>
<style type="text/css">
*{padding:0px;margin:0px;font:12px normal "microsoft yahei";}
#tabs {margin: 20px;padding: 5px;height: 150px;width: 290px;}
#tabs ul{line-height: 30px;display: block;height: 30px;border-bottom: 2px saddlebrown solid;list-style: none;}
#tabs ul li {line-height: 28px;background: #fff;text-align: center;display: inline-block;float: left;height: 28px;width: 60px;margin: 0px 3px;border:1px solid #aaa;border-bottom: none;list-style: none;cursor: pointer;}
#tabs ul li.on {border-top: 2px solid saddlebrown;border-bottom: 2px solid #fff;}
#tabs div {line-height: 25px;height: 120px;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";//当点击每个<li>时,所有<li>元素的类名为空,<div>元素的类名为隐藏,
}
this.className="on";//这个地方理解为:点击某个<li>,就将"on"赋给这个<li>,然后调用类名为"on"的标签,页面布局中只有第一个<li>的class为"on"
oDivs[this.index].className="";//赋值""是没有class属性的意思还是别的意思。承上,当前对象调用无类名的<div>标签。当i=0时,oLis[0].className="on",oDivs[0]无类名;当i=1时,oLis[1]没有类名,但this.className="on",所以又去调用oLis[0]的内容吗?同样oDivs[1].className=""和第二个div标签<div class="hide">之间是怎么联系的。总之对内容切换的实现过程不理解。
}
};
}
</script>
</head>
<body>
<!-- HTML页面布局 -->
<div id="tabs">
<ul>
<li class="on">房产</li>//只有第一个<li>的class为"on"
<li>家居</li>
<li>二手房</li>
</ul>
<div>//第一个<div>无class属性
275万购昌平邻铁三居 总价20万买一居<br>
200万内购五环三居 140万安家东三环<br>
北京首现零首付楼盘 53万购东5环50平<br>
京楼盘直降5000 中信府 公园楼王现房<br>
</div>
<div class="hide">//第二第三个<div>均为隐藏属性
40平出租屋大改造 美少女的混搭小窝<br>
经典清新简欧爱家 90平老房焕发新生<br>
新中式的酷色温情 66平撞色活泼家居<br>
瓷砖就像选好老婆 卫生间烟道的设计<br>
</div>
<div class="hide">
通州豪华3居260万 二环稀缺2居250w甩<br>
西3环通透2居290万 130万2居限量抢购<br>
黄城根小学学区仅260万 121平70万抛!<br>
独家别墅280万 苏州桥2居优惠价248万<br>
</div>
</div>
</body>
</html>
对内容切换不理解啊,我先简单的讲一下思路
首先是页面的初始化,最开始的时候第一个LI标签需要添加on样式,显示第一个div(即不给它添加hide样式,使其样式为空),其它div添加hide样式让其隐藏,其它LI不添加on样式让其处于未点击状态
我把你不懂的那块代码标注了下,你看看
for(var i=0,len=oLis.length;i<len;i++){//通过循环为所有的LI绑定点击事件 oLis[i].index=i;//添加index属性,方便后期找到当前点击LI对应的DIV,为其去除hide样式,即将其className赋值为空 oLis[i].onclick=function(){//循换绑定点击事件 for(var n=0;n<len;n++){//通过循环将所有的li的className赋值为空,即所有的LI皆是未点击的样式,所有的DIV的className为hide样式,即所有DIV都隐藏 oLis[n].className=""; oDivs[n].className="hide"; } this.className="on"; //通过this获取到当前点击的LI,将其className赋值为on,即让当前点击的LI显示其应有的点击样式 oDivs[this.index].className=""; //通过循环体内第一条语句存储的index值,找到当前点击LI对应的DIV,去除原有的hide样式,让其显示 } };
脚本代码只处理“房产”、“家居”、“二手房”,三个选项。每点击一个选项,代码就为每个选项设置CSS样式,过程是:先获取当前选项序号,再对每个选项添加css样式以及DIV(div的添加来自之前记录的序号)。
你这没理解this指的是哪个对象。这里this是当你点击哪个li的时候他就指向哪个li。点击第一个li(i = 0时),首先全部li的类名都为空,然后第一个li添加一个类名"on",点第二个li(i = 1时)也是让类名为空,然后再给第二个li添加类名“on”。第三个同理。其实第二句话也是这么个意思,先让所有div添加类名“hide”隐藏起来,然后点击li时,让该类名为空,使div不再隐藏。就是这么个意思
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>实践题 - 选项卡</title> <style type="text/css"> *{padding:0px;margin:0px;font:12px normal "microsoft yahei";} #tabs {margin: 20px;padding: 5px;height: 150px;width: 290px;} #tabs ul{line-height: 30px;display: block;height: 30px;border-bottom: 2px saddlebrown solid;list-style: none;} #tabs ul li {line-height: 28px;background: #fff;text-align: center;display: inline-block;float: left;height: 28px;width: 60px;margin: 0px 3px;border:1px solid #aaa;border-bottom: none;list-style: none;cursor: pointer;} #tabs ul li.on {border-top: 2px solid saddlebrown;border-bottom: 2px solid #fff;} #tabs div {line-height: 25px;height: 120px;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> <!-- HTML页面布局 --> <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>
看的太费劲了,你最好把整个代码贴出来,包括HTML JS CSS
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题