问答详情
源自:10-1 编程挑战

10-1编程挑战。js部分,有什么问题,为什么不实现选项卡变换效果

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>实践题 - 选项卡</title>

    <style type="text/css">

     /* CSS样式制作 */  

       *{

           margin:0;

           padding:0;

           font-family:"微软雅黑";

       }

       #content{

           height:600px;

           width:600px;

 position:absolute;

 top:50px;

 left:50%;

 margin-left:-200px;

       }

       ul{

           position:absolute;

           margin-left:10px;

           z-index:100;

       }

       ul li{

           list-style:none;

           font-size:20px;

           height:40px;

           width:100px;

           line-height:40px;

           text-align:center;

           border:2px solid gray;

           display:inline-block;

  border-bottom:none;

  

       }

       div div{

           border:2px solid blue;

  border-top:4px solid #cc9900;

  display:none;

           position:absolute;

  top:44px;

           height:150px;

           width:400px;

  padding:10px 15px 10px 10px;

  font-size:18px;


       }

  ul .selected{

border-top:4px solid #cc9900;

border-bottom:4px solid white;


  }

       div .selected{

display:inline-block;

  }

    </style>

    <script type="text/javascript">

         // JS实现选项卡切换

  


//选项卡实现思路

//第一步:

//鼠标滑倒某一个li上,先让所有li都没有select样式,然后再让当前li有select样式


//第二步:要操作谁就线获取谁


var div1=document.getElementById("content");

var lis=div1.getElementsByTagName("li");

var divs=div1.getElementsByTagName("div");


//第三步:给我们的li绑定鼠标移上去的事件


for(i=0;i<lis.length;i++){

lis[i].k=i;

lis[i].onmouseover=function(){

changecolor(this.k);

}

}


//第四步:制定一个功能方法,实现我们的需求

//nIndex是我们定义形参,代表当前被选择的元素索引


function changecolor(k){


for(var j=0;j<lis.length;j++){

lis[j].className="";

divs[j].className="";

}

lis[k].className="selected";

divs[k].className="selected";

}







    </script>

 

</head>

<body>

<!-- HTML页面布局 -->

<div id="content">

    <ul>

        <li>房产</li>

        <li>家居</li>

        <li>二手房</li>

    </ul>

    <div>275万购昌平邻铁三居 总价20万买一居<br/>

    200万内购五环三居 140万安家东三环<br/>

    北京首现零首付楼盘 53万购东5环50平<br/>

    京楼盘直降5000 中信府 公园楼王现房</div>

    <div> 40平出租屋大改造 美少女的混搭小窝<br/>

     经典清新简欧爱家 90平老房焕发新生<br/>

     新中式的酷色温情 66平撞色活泼家居<br/>

     瓷砖就像选好老婆 卫生间烟道的设计</div>

    <div>  通州豪华3居260万 二环稀缺2居250w甩<br/>

     西3环通透2居290万 130万2居限量抢购<br/>

     黄城根小学学区仅260万 121平70万抛!<br/>

     独家别墅280万 苏州桥2居优惠价248万</div>

</div>


 

</body>

</html>


提问者:慕小小白 2017-05-29 11:07

个回答

  • 慕小小白
    2017-05-29 11:43:49

    因为在加载var lis=div1.getElementsByTagName("li");时,浏览器还未加载到li标签,所以li是未定义的,只要把js部分放在浏览器加载完页面后加载即可正常实现“window.onload可实现此功能”