Ni *_* Ck 4 html javascript toggle show-hide
我有一个显示/隐藏脚本,我用于菜单.当我点击主链接时,它会在其下方显示一个列表.我想知道是否有一种方法可以改变它,以便当我点击它打开的链接时,但当我点击下一个它关闭另一个而不是让它们全部打开,除非你再次点击它关闭.
这是我的脚本:
<script type="text/javascript">
function toggle_visibility(id) {
var e = document.getElementById(id);
if(e.style.display == 'block')
e.style.display = 'none';
else
e.style.display = 'block';
}
</script>
<a href="#" onclick="toggle_visibility('list1');">
<p>List One</p>
</a>
<div id="list1" style="display:none;">
<ul>
<li>Item One</li>
<li>Item Two</li>
<li>Item Three</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
Luc*_*emy 14
假设这是你的代码:
<a href="#" onclick="toggle_visibility('list1');">
<p>List One</p>
</a>
<div id="list1" style="display:none;">
<ul>
<li>Item One</li>
<li>Item Two</li>
<li>Item Three</li>
</ul>
</div>
<a href="#" onclick="toggle_visibility('list2');">
<p>List Two</p>
</a>
<div id="list2" style="display:none;">
<ul>
<li>Item One</li>
<li>Item Two</li>
<li>Item Three</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
把它改成这个:
<a href="#" onclick="toggle_visibility('list1');">
<p>List One</p>
</a>
<div id="list1" class="alist" style="display:none;">
<ul>
<li>Item One</li>
<li>Item Two</li>
<li>Item Three</li>
</ul>
</div>
<a href="#" onclick="toggle_visibility('list2');">
<p>List Two</p>
</a>
<div id="list2" class="alist" style="display:none;">
<ul>
<li>Item One</li>
<li>Item Two</li>
<li>Item Three</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
并使你的JavaScript:
function toggle_visibility(id) {
var list = document.getElementsByClassName("alist");
for (var i = 0; i < list.length; i++) {
list[i].style.display = 'none';
}
var e = document.getElementById(id);
if(e.style.display == 'block') {
e.style.display = 'none';
} else {
e.style.display = 'block';
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个JSFiddle.
我建议您使用jQuery,而不是使用纯JavaScript.
这是我在jQuery中如何做到这一点:
function toggle_visibility(id) {
$(".list").hide();
$("#" + id).toggle();
}
Run Code Online (Sandbox Code Playgroud)