如何将 3 个不同的 div 的可见性切换为三个相应的 div
how can I toggle the visibility of 3 different divs to three corresponding divs
我正在尝试通过 3 个独立的对应图像来切换这 3 个 div 的可见性。我希望 div 在开始时被隐藏,并且在任何时候都只显示 1 个。任何帮助,将不胜感激。
这是我的 html:
<div class="us">
<img src="img/Kelly.svg" class="usiconK grow" onclick="toggleVisibility('name-togglek');">
<img src="img/Callum.svg" class="usiconC grow" onclick="toggleVisibility('name-togglec');">
<img src="img/Jong.svg" class="usiconJ grow" onclick="toggleVisibility('name-togglej');">
</div>
<div class="us2 name-togglek" style="display: none;">
<h2 id="redspacing">
kelly hill
</h2>
</div>
<div class="us2 name-togglec" style="display: none;">
<h2 id="redspacing">
callum nowlan-dias
</h2>
</div>
<div class="us2 name-togglej" style="display: none;">
<h2 id="redspacing">
jong seul bae
</h2>
</div>
这是我的脚本:
<script>
var divs = ["name-togglek", "name-togglec", "name-togglej"];
var visibleDivId = null;
function toggleVisibility(divId) {
if(visibleDivId === divId) {
visibleDivId = null;
} else {
visibleDivId = divId;
}
hideNonVisibleDivs();
}
function hideNonVisibleDivs() {
var i, divId, div;
for(i = 0; i < divs.length; i++) {
divId = divs[i];
div = document.getElementById(divId);
if(visibleDivId === divId) {
div.style.display = "block";
} else {
div.style.display = "none";
}
}
}
</script>
您正在使用 getElementById,但 html 将这些标识符作为 类,而不是 id。尝试更改为:
<div id="name-togglek" class="us2" style="display: none;">
<h2 id="redspacing">
kelly hill
</h2>
</div>
其他 div 也是如此。
这些不是 id,而是 类。使用 document.getElementsByClassName
。简化您的代码:
var divs = ["name-togglek", "name-togglec", "name-togglej"];
var visibleDivId = null;
function toggleVisibility(divId) {
document.getElementsByClassName(divId)[0].style.display = "block";
for(var i=0;i<divs.length;i++){
if(divs[i] != divId){
document.getElementsByClassName(divs[i])[0].style.display = "none";
}
}
}
TDDdev 是正确的下面是我在大约 2 分钟内敲出的一些代码,所以没有测试但应该没问题
为您添加了一个 jsfiddle 访问下面link
http://jsfiddle.net/yow677Lh/1/
Javascript:
function toggleVisibility(divId) {
for (var i = 0; i < divs.length; i++) {
if (divs[i] === divId) {
if ($(divs[i]).css("display") === "none") $(divs[i]).show();
} else {
if ($(divs[i]).css("display") !== "none") $(divs[i]).hide();
}
}
}
我喜欢 jQuery 解决方案的想法,这个对我来说似乎有点简单:
$('.us img').on('click', function(){
$($('.us2').get($('.us img').index($(this)))).show().siblings('.us2').hide();
});
这里是 fiddle:http://jsfiddle.net/h9z5rkxx/
我正在尝试通过 3 个独立的对应图像来切换这 3 个 div 的可见性。我希望 div 在开始时被隐藏,并且在任何时候都只显示 1 个。任何帮助,将不胜感激。
这是我的 html:
<div class="us">
<img src="img/Kelly.svg" class="usiconK grow" onclick="toggleVisibility('name-togglek');">
<img src="img/Callum.svg" class="usiconC grow" onclick="toggleVisibility('name-togglec');">
<img src="img/Jong.svg" class="usiconJ grow" onclick="toggleVisibility('name-togglej');">
</div>
<div class="us2 name-togglek" style="display: none;">
<h2 id="redspacing">
kelly hill
</h2>
</div>
<div class="us2 name-togglec" style="display: none;">
<h2 id="redspacing">
callum nowlan-dias
</h2>
</div>
<div class="us2 name-togglej" style="display: none;">
<h2 id="redspacing">
jong seul bae
</h2>
</div>
这是我的脚本:
<script>
var divs = ["name-togglek", "name-togglec", "name-togglej"];
var visibleDivId = null;
function toggleVisibility(divId) {
if(visibleDivId === divId) {
visibleDivId = null;
} else {
visibleDivId = divId;
}
hideNonVisibleDivs();
}
function hideNonVisibleDivs() {
var i, divId, div;
for(i = 0; i < divs.length; i++) {
divId = divs[i];
div = document.getElementById(divId);
if(visibleDivId === divId) {
div.style.display = "block";
} else {
div.style.display = "none";
}
}
}
</script>
您正在使用 getElementById,但 html 将这些标识符作为 类,而不是 id。尝试更改为:
<div id="name-togglek" class="us2" style="display: none;">
<h2 id="redspacing">
kelly hill
</h2>
</div>
其他 div 也是如此。
这些不是 id,而是 类。使用 document.getElementsByClassName
。简化您的代码:
var divs = ["name-togglek", "name-togglec", "name-togglej"];
var visibleDivId = null;
function toggleVisibility(divId) {
document.getElementsByClassName(divId)[0].style.display = "block";
for(var i=0;i<divs.length;i++){
if(divs[i] != divId){
document.getElementsByClassName(divs[i])[0].style.display = "none";
}
}
}
TDDdev 是正确的下面是我在大约 2 分钟内敲出的一些代码,所以没有测试但应该没问题
为您添加了一个 jsfiddle 访问下面link
http://jsfiddle.net/yow677Lh/1/
Javascript:
function toggleVisibility(divId) {
for (var i = 0; i < divs.length; i++) {
if (divs[i] === divId) {
if ($(divs[i]).css("display") === "none") $(divs[i]).show();
} else {
if ($(divs[i]).css("display") !== "none") $(divs[i]).hide();
}
}
}
我喜欢 jQuery 解决方案的想法,这个对我来说似乎有点简单:
$('.us img').on('click', function(){
$($('.us2').get($('.us img').index($(this)))).show().siblings('.us2').hide();
});
这里是 fiddle:http://jsfiddle.net/h9z5rkxx/