这是我的html,css和javascript都在一个地方
JS
var links = document.getElementsByTagName("a"); //get the links
var len = links.length;
for(var i = 0; i<len; i++) {
links[i].onclick = handleClick; // add onclick handler
}
function handleClick(e){
var target = e.target;
var id = target.id + "content";
document.getElementById(id).style.zIndex = 10;
}
HTML
<div id="tabbed">
<a href="#" id="tabe1">Tabe1</a>
<div class="section" id="tabe1content">
<div>
<p> content1 </p>
</div>
</div>
<a href="#" id="tabe2">Tabe2</a>
<div class="section" id="tabe2content">
<div>
<p> content2 </p>
</div>
</div>
<a href="#" id="tabe3">Tabe3</a>
<div class="section" id="tabe3content">
<div>
<p> content3 </p>
</div>
</div>
</div>
CSS
.section{
position:absolute;
float:left;
width:500px;
background-color:gray;
left:0;
top:0;
height:300px;
margin-top:30px;
}
#tabbed{
position:relative;
}
a {
margin-right:10px;
float:left;
display:block;
}
当我测试它时,它只能工作一次。第二次点击表1时,它仍然显示表3.请看看有什么问题,还有其他比我更好的方法吗?
答案 0 :(得分:1)
.section{
position:absolute;
float:left;
width:500px;
background-color:gray;
left:0;
top:0;
height:300px;
margin-top:30px;
z-index: 1;
}
#tabbed{
position:relative;
}
a {
margin-right:10px;
float:left;
display:block;
}
<div id="tabbed">
<a href="#" id="tabe1">Tabe1</a>
<div class="section" id="tabe1content">
<div>
<p> content1 </p>
</div>
</div>
<a href="#" id="tabe2">Tabe2</a>
<div class="section" id="tabe2content">
<div>
<p> content2 </p>
</div>
</div>
<a href="#" id="tabe3">Tabe3</a>
<div class="section" id="tabe3content">
<div>
<p> content3 </p>
</div>
</div>
</div>
var root = document.getElementById("tabbed");
var veryTop = 2;
root.onclick = handleClick;
function handleClick(e){
var target = e.target;
if ( target.tagName !== 'A' ) { e.preventDefault(); return; }
var tab = document.getElementById( target.id + 'content' );
tab.style.zIndex = ( veryTop++ ).toString();
e.preventDefault();
}
PS。应该解决你的“一次工作”问题。
答案 1 :(得分:0)
当您点击JS的末尾附近的标签时,您将每个标签的z-index
设置为10.完成此操作后,它们不会更改。
在onclick handler
内,您需要构建一个字符串,将所有其他z索引设置为较小的数字;我不确定这样做的确切方法,但你似乎知道足以完成这一部分。
答案 2 :(得分:0)
您可以迭代section
课程,重置z-index
所有课程,然后设置新课程:
var elems = document.getElementsByClassName("section");
for (var i = 0; i < elems.length; i++) {
elem[i].style.zIndex = 0; //or whatever your default is
}
var target = e.target;
var id = target.id + "content";
document.getElementById(id).style.zIndex = 10;
答案 3 :(得分:0)
你的z-index都是一样的。添加一个小函数来对它们进行排序:
function sortZindex(){
for(var i = 0; i<len; i++) {
var id = links[i].id + "content";
document.getElementById(id).style.zIndex = 9;
}
}