如何在两个div之间切换

时间:2011-02-08 18:15:38

标签: javascript jquery toggle toggleclass

我试图在两个div之间切换。例如,onload,我希望显示左侧内容,并且正确的内容将保持隐藏状态。如果我单击右侧div,我希望隐藏左侧内容并显示正确的内容,反之亦然。我是javascript的新手,但这就是我所拥有的。我似乎无法让它发挥作用。请帮忙......

这是我的HTML代码:

<div onclick="toggle_visibility('left');">
  Left
</div>

<div onclick="toggle_visibility('right');">
  Right
 </div>


 <div id="left" style="display: block;">
    This is the content for the left side
 <div>

 <div id="right" style="display: none;">
    This is the content for the ride side
 </div>

这是我正在使用的Javascript:

<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>

5 个答案:

答案 0 :(得分:6)

现场演示: http://jsfiddle.net/PauWy/1/

HTML:

<p id="toggle">
    <span> Left </span>
    <span> Right </span>
</p>

<div id="left"> LEFT CONTENT </div>
<div id="right"> RIGHT CONTENT </div>

JavaScript:

$('#toggle > span').click(function() {
    var ix = $(this).index();

    $('#left').toggle( ix === 0 );
    $('#right').toggle( ix === 1 );
});

CSS(隐藏正确的DIV onload):

#right { display:none; } 

将JavaScript代码放在页面底部。

    <script>
        $(function() {        
            // put jQuery code here    
        });
    </script>    
</body>

注意SCRIPT元素如何位于BODY元素的末尾。另请注意,jQuery代码应位于就绪处理程序中:$(function() { ... code ... });

答案 1 :(得分:3)

这是一个在两个html文档之间切换的小例子。首先在身体加载时调用该函数。你需要用你要翻转的两个页面替换1.html和2.html。如果您想要更长的延迟,请用您想要的任何东西替换3000。计时器值以毫秒为单位,因此如果您想要20秒,则为20000。

      <html> 
        <head> 
         <script type="text/javascript"> 
          top.visible_id = 'right'; 

          function toggle_visibility() { 

             var right_e = document.getElementById('right'); 
             var left_e = document.getElementById('left'); 
            if (top.visible_id == 'right') {
              right_e.style.display = 'none'; 
              left_e.style.display = 'block'; 
              top.visible_id = 'left';
            } else {
              right_e.style.display = 'block'; 
              left_e.style.display = 'none'; 
              top.visible_id = 'right';
            }
            var t = setTimeout("toggle_visibility()",3000);
          } 

          </script> 
        </head> 
        <body onload="toggle_visibility();"> 

         <div id="left" > 
            <iframe src="1.html"></iframe>
         </div> 

         <div id="right" > 
            <iframe src="2.html"></iframe>
         </div> 

        </body> 
      </html> 

答案 2 :(得分:1)

因为你标记了问题jquery,所以假设你对jquery解决方案持开放态度。它会使这很简单。看看下面的示例jsfiddle ......

http://jsfiddle.net/VztjL/

当然你需要一些css来进行样式设置,但是单击示例中的div将在两个div之间切换

答案 3 :(得分:1)

对于初学者来说,缺少结束标记。讨厌的东西,那些。

其次,您需要跟踪当前可见的div,以便隐藏它。以下应该有效。

<html>
<head>
 <script type="text/javascript">
  top.visible_div_id = 'right';
  function toggle_visibility(id) {
     var old_e = document.getElementById(top.visible_div_id);
     var new_e = document.getElementById(id);
     if(old_e) {
        console.log('old', old_e, 'none');
        old_e.style.display = 'none';
     }
    console.log('new', new_e, 'block');
     new_e.style.display = 'block';   
     top.visible_div_id = id;          
  }
  </script>
</head>
<body onload="toggle_visibility('left');">

<div onclick="toggle_visibility('left');">
  Left
</div>

<div onclick="toggle_visibility('right');" >
  Right
</div>


 <div id="left" >
    This is the content for the left side
 </div>

 <div id="right" >
    This is the content for the ride side
 </div>

</body>
</html>

答案 4 :(得分:0)

您每次只切换2个元素中的1个的可见性。单击左侧时,它将消失,但您没有告诉右侧出现。尝试:

<div onclick="toggle_visibility('left');toggle_visibility('right');">
  Left
</div>

<div onclick="toggle_visibility('right');toggle_visibility('left');">
  Right
 </div>
相关问题