<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
margin:0;
padding: 0;
}
.active{
background: red;
}
#main p{
width: 200px;
height: 200px;
background: yellow;
display: none;
}
</style>
<script>
window.onload=function()
{
var op = document.getElementById('main');
var oIp = op.getElementsByTagName('input');
var ap = op.getElementsByTagName('p');
for(var i=0;i<oIp.length;i++)
{
oIp[i].index=i;
oIp[i].onclick=function()
{
for(var i=0;i<oIp.length;i++) // 就是这儿
{
oIp[i].className="";
ap[i].style.display="";
}
this.className="active";
ap[this.index].style.display="block"
}
}
}
</script>
</head>
<body>
<p id="main">
<input class="active" type="button" value="111">
<input type="button" value="222">
<input type="button" value="333">
<input type="button" value="444">
<p style="display: block">1</p>
<p>2</p>
<p>3</p>
<p>4</p>
</p>
</body>
</html>
这是一个网上的选项卡的例子,然后不太懂例子中js部分,第二次for循环的意思是什么。。。QAQ
大家讲道理2017-06-30 10:00:54
外面一层的for,主要是为了给每一个选项卡按钮绑定onclick
事件。
而里面的这个for,是在绑定的onclick
事件之内,它的作用是,
当点击了被绑定的选项卡时,遍历所有的选项卡,把不是当前点击的选项卡都重置成隐藏状态,然后这个for
事件之内,它的作用是,
下面的:
this.className="active";
ap[this.index].style.display="block";
是把当前点击项对应的标签页显示出来。
这样,就只有当前点击项对应的标签会显示出来,其余的标签页都被隐藏。
如果没有这个for,当你点击第一个标签,第一个标签显示出来。
然后你点击了第二个标签,第二个标签显示出来,现在就有第一个和第二个标签页同时显示;
这样,到最后,你点完所有的标签按钮时,所有的标签页都显示出来,这显然不是标签页的效果。for
怪我咯2017-06-30 10:00:54
大致的功能是要实现点击切换到该选项卡。
所谓切换,就是其他隐藏,当前显示。
而你说的那部分就是隐藏所有 input 的。
就是每次点击是,都遍历一次 所有 input, 去掉 class 和 display 属性,藏起来,
然后单单为 this, 也就是当前点击项加上 class 和 display 属性,显示出来
过去多啦不再A梦2017-06-30 10:00:54
我给代码打上注释,看到注释就知道了!代码原理就是先清除所有input的类名和隐藏所有的p,然后给当前点击的input加上类名,显示当前索引对应的p!
<script>
window.onload=function()
{
var op = document.getElementById('main');
var oIp = op.getElementsByTagName('input');
var ap = op.getElementsByTagName('p');
//遍历input
for(var i=0;i<oIp.length;i++)
{
//自定义属性index,()
oIp[i].index=i;
//给每一个input绑定点击事件
oIp[i].onclick=function()
{
//首先,清除掉所有的input的类名和p的样式(就是让所有p先隐藏)。
for(var i=0;i<oIp.length;i++) // 就是这儿
{
oIp[i].className="";
ap[i].style.display="";
}
//当前的input添加类名
this.className="active";
//根据当前input的索引,把对应的索引的p加上样式(就是让对应的索引的p现实)
ap[this.index].style.display="block"
}
}
}
</script>