使用javascript显示/隐藏脚本

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)