我想在菜单点击上隐藏/显示div

时间:2013-11-12 13:59:57

标签: javascript html menu swap

我的菜单<div class="menu">有一个div来编码; <a href="#" onclick="show('about')">About Us</a> 我的网页<div class="pages">有一个div,其中包含不同div ID下的许多页面。例; <div id="about" style='display:block'> javascipt的:

<script>
        function show(target){
        document.getElementById(target).style.display = 'block';
        }
        function hide(target){
        document.getElementById(target).style.display = 'none';
        }


    </script>

我不知道我做错了什么,但div支持做什么是根据菜单点击换出。

3 个答案:

答案 0 :(得分:2)

<a href="#" onclick="toggle('about');">About Us</a>
<a href="#" onclick="toggle('contact');">Contact</a>

<div class="article" id="about" style="display:none;">ABOUT ARTICLE...</div>
<div class="article" id="contact" style="display:none;">CONTACT ARTICLE...</div>

function toggle(target){

  var artz = document.getElementsByClassName('article');
  var targ = document.getElementById(target);  
  var isVis = targ.style.display=='block';

  // hide all
  for(var i=0;i<artz.length;i++){
     artz[i].style.display = 'none';
  }
  // toggle current
  targ.style.display = isVis?'none':'block';

  return false;
}

Live demo

答案 1 :(得分:0)

你需要首先隐藏所有div,除了最初显示的div,然后返回false以防止你的链接默认操作,因为它有一个锚

    function show(target){
       document.getElementById(target).style.display = 'block';
       return false;
    }
    function hide(target){
       document.getElementById(target).style.display = 'none';
       return false;
    }

答案 2 :(得分:0)

您需要先隐藏所有页面,然后显示所选页面。您还需要处理链接的默认行为(页面导航)

这可能适用于您现有的HTML:

function show(target){
    hideAllPages();//hide all pages
    document.getElementById(target).style.display = 'block';//show selected page
    return false;//cancel page navigation
}

function hideAllPages(){
    var pages = document.getElementsByClassName("pages");
    for(var i = 0; i < pages.length; i++){
        pages[i].style.display = 'none';
    }
}