js原生选项卡切换

效果图:

  • 推荐新闻
  • 国际新闻
  • 军事新闻
  • 娱乐新闻
html代码:
 1 <div id="box">
 2   <ul id="title">
 3     <li class="active">推荐新闻</li>
 4     <li>国际新闻</li>
 5     <li>军事新闻</li>
 6     <li>娱乐新闻</li>
 7   </ul>
 8   <div class="recommend" style="display: block;">
 9     <ul>
10       <li><a href="#">各地纪念日本宣布无条件投降73周年</a></li>
11       <li><a href="#">8月16日5时56分安德烈亚诺夫群岛发生6.6级地</a></li>
12       <li><a href="#">发改委:美加征关税对华影响可控 中方反制理性克制</a></li>
13     </ul>    
14   </div>
15   <div class="international">
16     <ul>
17       <li><a href="#">亚运会-中国香港4-0完胜中国台北 韩国6-0大..</a></li>
18       <li><a href="#">瑞典百辆车被一夜点燃 首相愤怒回应:你们到底在搞什..</a></li>
19       <li><a href="#">土耳其只是开始,下一块倒下的多米诺骨牌可能是</a></li>
20     </ul>
21   </div>
22   <div class="military">
23     <ul>
24       <li><a href="#">特朗普决定搜刮120多个穷国 为何却放过这个国家?</a></li>
25       <li><a href="#">抗衡中国?法媒:美将拨3900万美元援助斯里兰卡</a></li>
26       <li><a href="#">特朗普签署2019财年美国国防授权法案</a></li>
27     </ul>
28   </div>
29   <div class="entertainment">
30     <ul>
31       <li><a href="#">昆凌荡秋千少女十足 周杰伦掌镜甜蜜还原《晴天》</a></li>
32       <li><a href="#">苍井空疑似怀孕,挂送子图提前抱宝宝体验当妈</a></li>
33       <li><a href="#">黄晓明深夜声明:未参与股票操控 是理财不慎 回顾“..</a></li>
34     </ul>
35   </div>
36 </div>

css代码:

ul{
  display: flex;
}
li{
  list-style: none;
}
ul li{
  width: 150px;
  line-height: 2em;
  text-align: center;
  background:linear-gradient(#eee 37%,#666);
}
a{
  text-decoration: none;
  line-height: 2em;
  color: #111;
}
#box>div{
  width: 600px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  padding: 10px 10px;
  display: none;
  border: 1px solid #EEEEEE;
}
/*选中样式*/
.active{
  background:linear-gradient(#666 37%,#eee);
  color: #FFFFFF;
  margin: 0;
}

javascript代码:

var box = document.getElementById("box");
var title = box.getElementById("title");
var aLi = title.getElementsByTagName("li");
var aDiv = box.getElementsByTagName("div");
  for(var i = 0; i < aLi.length; i++){
  aLi[i].index = i;
  aLi[i].onclick = function(){
    for(var k = 0; k < aLi.length; k++){
      aLi[k].className = "";
      aDiv[k].style.display = "none";
    }
    this.className = "active";
    aDiv[this.index].style.display = "block";
  }
}

1.获取所有的li

2.获取所有的div

3.循环li把li的索引取出赋予i;

4.循环所有li和div,把样式清除,在同时赋予样式