试图隐藏所有可见的div并仅显示所选的div

时间:2016-10-17 19:40:55

标签: javascript html javascript-events toggle

以下代码用于切换开启和关闭的可见性,但我希望能够隐藏任何可见的div并仅显示可见的div。这是HTML:     

    <div id="hiddena">
    </div>

    <div id="hiddenb">
    </div>

    <div id="hiddenc">
    </div>

    <div id="hiddend">
    </div>

    <div id="hiddene">
    </div>

</div>

<div id="buttona">
    <button type=submit onclick="switchVisible('hiddena');"></button>
</div>

<div id="buttonb">
    <button type=submit onclick="switchVisible('hiddenb');"></button>
</div>

<div id="buttonc">
    <button type=submit onclick="switchVisible('hiddenc');"></button>
</div>

<div id="buttond">
    <button type=submit onclick="switchVisible('hiddend');"></button>
</div>

<div id="buttone" class="tall">
    <button type=submit onclick="switchVisible('hiddene');"></button>
</div>

这是脚本......     

function switchVisible(id) {
   var e = document.getElementById(id);
   if(e.style.display == 'block')
      e.style.display = 'none';
   else
      e.style.display = 'block';
}

</script>

是否有人对脚本有任何建议或补充可以实现此目的?

由于

2 个答案:

答案 0 :(得分:1)

一次隐藏所有这些,然后只出现你想要的那个会不会有问题?

function hide_them() {
    var divsList = ["hiddena", "hiddenb", "hiddenc", "hiddend", "hiddene"]
    divsList.forEach(function (element) {
        element.style.visibility = "hidden";
    });
}

最后,只需在你的func开始时调用hide_them函数:

function switchVisible(id) {
   hide_them();
   var e = document.getElementById(id);
   e.style.display = 'block';
}

另一种方法是按标签选择元素,并将它们全部隐藏(这不是很好的方法,因为当你的代码长大时,它可能会导致不必要的问题)

答案 1 :(得分:0)

这里很少有建议

  1. 永远不要将您的标记与javascript混合使用。您可以考虑使用addeventlistener或jQuery bind
  2. 在javascript上绑定onclick
  3. ID应该始终是唯一的。如果你想让多个元素具有相同的名称,你可以考虑使用class,因为document.getelementsbyclassname总是返回一个数组 3.在你的show / hide逻辑中,你正在检查元素是“block”还是“none”。显示元素时,默认情况下,element.style.display将为“”而非“阻止”
  4. 检查以下代码段

    <div id="hiddena">
      div1
        </div>
    
        <div id="hiddenb">
          div2
        </div>
    
        <div id="hiddenc">
          div3
        </div>
    
        <div id="hiddend">
          div4
        </div>
    
        <div id="hiddene">
          div5
        </div>
    
    
    <div id="buttona">button1
        <button type=submit onclick="switchVisiblebyId('hiddena');"></button>
    </div>
    
    <div id="buttonb">button2
        <button type=submit onclick="switchVisiblebyId('hiddenb');"></button>
    </div>
    
    <div id="buttonc">button3
        <button type=submit onclick="switchVisiblebyId('hiddenc');"></button>
    </div>
    
    <div id="buttond">button4
        <button type=submit onclick="switchVisiblebyId('hiddend');"></button>
    </div>
    
    <div id="buttone" class="tall">button5
        <button type=submit onclick="switchVisiblebyId('hiddene');"></button>
    </div>
    {{1}}
    希望这有助于