效果图如下:
思路:
选项和内容用Tagname类似数组匹配 外层循环设置选项的index,若循环到触发了onclick事件的属性开始内层循环 内层循环把所有的选项和div设置成class="",class="hide" 最后把本标题和div设置成class="on",class="" <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>选项卡</title> <style> *{margin:0px;padding: 0px;font-size: 12px;} #SCard{ width: 290px; height: 155px; margin: 20px;/*没用,我不想让它贴边而已*/ } #SCard ul{ height: 30px; display: block; } #SCard ul li{ width: 70px; height: 28px; line-height: 28px; list-style: none; display: block; float: left; text-align: center; margin: 0 3px; border: 1px solid #336699;/*注意以下两行*/ border-bottom: none; } #SCard ul li.on{ /*此处只用.on匹配不到?,必须有#SCard才能匹配*/ border-top:2px solid #336699; border-bottom: 2px solid #fff; } #SCard div{ height: 120px; width: 290px; border: 2px solid #000; } .hide{display: none;} </style> <script type="text/javascript"> /* 选项和内容用Tagname类似数组匹配 外层循环设置选项的index,若循环到触发了onclick事件的属性开始内层循环 内层循环把所有的选项和div设置成class="",class="hide" 最后把本标题和div设置成class="on",class="" */ window.onload=function () { var oSCard=document.getElementById("SCard"); var oul=oSCard.getElementsByTagName("ul")[0]; var oli=oul.getElementsByTagName("li"); //返回HTMLCollection对象,此对象有length属性,nameItem()方法 var odiv=oSCard.getElementsByTagName("div"); var olen=oli.length; for(var i=0;i<olen;i++){ oli[i].index=i;//.index向oli集合的每个对象添加index方法并赋值为i oli[i].onclick=function () {//.onclick向每个li标签添加点击事件 for(var n=0;n<olen;n++){ odiv[n].className="hide"; oli[n].className=""; } this.className = "on"; odiv[this.index].className = ""; } } } </script> </head> <body> <div id="SCard"> <ul> <li class="on">房产</li> <li>家居</li> <li>二手房</li> </ul> <div> 275万购昌平邻铁三居 总价20万买一居<br> 200万内购五环三居 140万安家东三环<br> 北京首现零首付楼盘 53万购东5环50平<br> 京楼盘直降5000 中信府 公园楼王现房<br> </div> <div class="hide"> 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>1.document.getElementsByTagName()返回值是HTMLCollection对象,有length属性和namedItem()方法(用name特性获取集合中的项),使该对象可以按索引,按值访问。
2.上面代码向HTMLCollection对象添加了index属性