试图效仿其分为三个同样大小的div联系我们页面。企图用JS设置点击设置为显示相应的div和隐藏任何DIV是开放。出于某种原因,该代码是行不通的。任何帮助表示赞赏。因为它仅仅是HTML / JS这是不工作,我会删除我的CSS。
我曾尝试为每个列表项的编写单独的功能,并没有在点击不同的DIV关闭之前的(开放)股利。开始:
var showDivs = function(){
//get array of all columns in the list
var columns = document.getElementsByClassName('column');
//get length of array
var columnsLength = columns.length;
//run a for loop through all the columns to apply the click function
for(var a=0;a<columnsLength;a++){
//get the element
var el = columns[a];
//set the on click
el.onclick = function(e){
//get the targeted element
var _this = e.currentTarget;
//get element ID
var _thisId = _this.getAttribute("id");
//slice ID to get number
var _thisIdIndex = _thisId.slice(7);
//get related content
var _thisContent = document.getElementById("content-"+_thisIdIndex);
//check to see if content is displaying already
if(_thisContent.style.display === "block"){
//yes - so hide it
_thisContent.style.display = "none";
}else{
//no so lets hide all others and show it
//get array of content
var contents = document.getElementsByClassName('content');
//get length of array
var contentsLength = contents.length;
//run a for loop through all content to apply hide or show
for(var b=0;b<contentsLength;b++){
//does the content ID NOT equal the ID of the related column index
if(contents[b].getAttribute("id") !== "content-"+_thisIdIndex){
//correct - hide this content
contents[b].style.display = "none";
}else{
//nope - this is the content to show!
contents[b].style.display = "block";
}
}
}
}
}
};
showDivs();
.container{width:100%;}
.content{display: none;}
.column{width:33%;float:left;}
<div class="container">
<!--Table Left Column - Original Problem-->
<div class="firstcolumn">
<ul class="formatfix">
<li class="title"><p style="padding: 0; margin: 0;">1. Choose a topic</p></li>
<li id="column-ONE" class="selected"><a><i class="fa-tbc"></i>Option 1</a></li>
<li id="column-TWO" class="selected"><a><i class="fa-tbc"></i>Option 2</a></li>
<li id="column-THREE" class="selected"><a><i class="fa-tbc"></i>Option 3</a></li>
<li id="column-FOUR" class="selected"><a><i class="fa-tbc"></i>Option 4</a></li>
<li id="column-FIVE" class="selected"><a><i class="fa-tbc"></i>Option 5</a></li>
<li id="column-SIX" class="border-top selected"><a><i class="fa-tbc"></i>Something else</a></li>
</ul>
</div>
<!-- Table Middle Column - Option 1 List-->
<div id="content-ONE" class="column content">
<ul class="formatfix">
<li class="border-bottom title"><p style="padding: 0; margin: 0;">2. Tell us more</p></li>
<li class="selected"><a><i class="fa-tbc"></i>List 1 Option 1</a></li>
<li class="selected"><a><i class="fa-tbc"></i>List 1 Option 2</a></li>
<li class="selected"><a><i class="fa-tbc"></i>List 1 Option 3</a></li>
<li class="selected"><a><i class="fa-tbc"></i>List 1 Option 4</a></li>
<li class="selected"><a><i class="fa-tbc"></i>List 1 Option 5</a></li>
<li class="selected"><a><i class="fa-tbc"></i>List 1 Option 6</a></li>
</ul>
</div>
<!-- Table Middle Column - Option 2 List-->
<div id="content-TWO" class="column content">
<ul class="formatfix">
<li class="border-bottom title"><p style="padding: 0; margin: 0;">2. Tell us more</p></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 1</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 2</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 3</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 4</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 5</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 6</a></li>
</ul>
</div>
<!-- Table Middle Column - Option 3 List-->
<div id="content-THREE" class="column content">
<ul class="formatfix">
<li class="border-bottom title"><p style="padding: 0; margin: 0;">2. Tell us more</p></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 1</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 2</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 3</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 4</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 5</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 6</a></li>
</ul>
</div>
<!-- Table Middle Column - Option 4 List-->
<div id="content-FOUR" class="column content">
<ul class="formatfix">
<li class="border-bottom title"><p style="padding: 0; margin: 0;">2. Tell us more</p></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 1</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 2</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 3</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 4</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 5</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 6</a></li>
</ul>
</div>
<!-- Table Middle Column - Option 5 List-->
<div id="content-FIVE" class="column content">
<ul class="formatfix">
<li class="border-bottom title"><p style="padding: 0; margin: 0;">2. Tell us more</p></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 1</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 2</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 3</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 4</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 5</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 6</a></li>
</ul>
</div>
<!-- Something Else Column -->
<div id="content-SIX" class="column content">
<ul class="formatfix">
<li class="border-bottom title"><p style="padding: 0; margin: 0;">2. Tell us more</p></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 1</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 2</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 3</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 4</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 5</a></li>
<li class="selected"><a><i class="fa-tbc"></i>Option 6</a></li>
</ul>
</div>
</div>
既然这样,什么都不会发生在点击。有可能是使用HTML中的问题,但我太初级表达什么的JS需要工作。谢谢你的帮助。
您的代码有很多错误。因为你在视图看前先查看已装为主columns
开始为undefined
。如果你这样做:
setTimeout (() => {
showDivs ();
}, 500);
然后是列将被定义。
但这种做法是不正确或者。你必须把一个onload
标签在<body>
,并通过它的功能。然后,在此功能的观点将被加载,你可以安静地工作。
我建议研究如何在JavaScript调试。
希望这有助于!
谢谢您的回答。
我已经从“thisTarget”到“目标”改变JS代码,我周围选择列表中的DIV固定的问题,也是ID是在列表中的项目,而不是链接。
剧本也是在页面的底部...
现在所有的工作!