上来先说说实现思路
首先 我们要做什么 ?
eg: 通过点击 让对应的页面展示出来
这里我们是否需要获取到要点击的元素呢? 例如ul下的li, 然后要让谁展示呢? 对的,是展示内容。例如我写的div.
所以我们就需要获取到 点击 和展示 两个要操作的元素
var tab = document.getElementsByClassName("tab")[0],
oLis = tab.getElementsByTagName("li"),
oDivs = tab.getElementsByTagName("div");
像这样
接下来 就是绑定事件
for(var i =0;i<oLis.length;i++){
for (var i = 0; i < oLis.length; i++) {
var curele = oLis[i];
curele.i = i;
curele.onclick = function () {
//清空其他样式
for (var i = 0; i < oLis.length; i++) {
oLis[i].className = "";
oDivs[i].className = "";
}
// 重写样式
this.className = "on";
oDivs[this.i].className = "show";
}
}
在这里我们用循环来给每一个li都绑上对应的点击事件 你也可以换成 onmouseover
鼠标移入事件。
事件里面就是我们要改动的地方了 在这里我是通过改动样式(类名),只有拥有show和on的才会被展示出来。
效果如下
然后是代码部分
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.tab ul {
float: left;
}
.tab ul li {
color: #000000;
width: 50px;
}
.tab div {
width: 500px;
height: 500px;
background-color: aqua;
display: none;
}
.on {
display: block;
background-color: brown;
}
.tab .show {
display: block;
float: left;
}
</style>
</head>
<body>
<div class="tab">
<ul>
<li class="on">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<div class="show">1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
</body>
<script>
var tab = document.getElementsByClassName("tab")[0],
oLis = tab.getElementsByTagName("li"),
oDivs = tab.getElementsByTagName("div");
//检查是否拿到了
console.log(oLis);//类数组
console.log(oDivs);//类数组
for (var i = 0; i < oLis.length; i++) {
var curele = oLis[i];
curele.i = i;
curele.onclick = function () {
//清空其他样式
for (var i = 0; i < oLis.length; i++) {
oLis[i].className = "";
oDivs[i].className = "";
}
// 重写样式
this.className = "on";
oDivs[this.i].className = "show";
}
}
</script>
</html>
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。