【问题标题】:how to get divs to display one at a time, set to a time如何让 div 一次显示一个,设置为一次
【发布时间】:2016-09-08 17:18:23
【问题描述】:

我一直在使用 setInterval 和 setTimeout 来显示一个 div,然后再继续显示第二个 div,然后显示第三个(最终)。在最终的 div 显示后,我想循环回到第一个 div 以再次开始切换 div 的过程。

setInterval(function(){ 
  $(".one").toggle(); 
  $(".two").toggle();

}, 5000);

所以我发现这个循环运行得非常好,但是当我引入“.third” div 时,它会跳过第二个,我非常困惑!

【问题讨论】:

  • 这个想法是切换/切换/替换....但我的印象是它不应该在两个值之外工作

标签: javascript jquery html css dom


【解决方案1】:

为它们提供相同的类,并使用每次递增的计数器变量来知道要显示哪一个。到达最后一个 div 时使用模数环绕。

var counter = 0;
setInterval(function() {
  $(".class").hide();
  $(".class").eq(counter).show();
  counter = (counter + 1) % $(".class").length;
}, 2000);
.class {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="class">
  Div 1
</div>
<div class="class">
  Div 2
</div>
<div class="class">
  Div 3
</div>
<div class="class">
  Div 4
</div>

【讨论】:

    【解决方案2】:

    您需要遍历您的 div,否则您只是每 5000 毫秒切换一次所有 div,这似乎只适用于两个 div,但不适用于更多

    伪代码:

    var divs = [$(".one"),$(".two"),$(".three")]
    var index = 0
    function focusNextDiv(){
      //hide all divs
      //select divs[index] and toggle it
      //increment index by 1
      //check if index is bigger than divs.length if so reset index to 0
    }
    setInterval(function(){ 
      focusNextDiv()
    }, 5000);
    

    【讨论】:

    • 感谢 DavidIrnt,这是我尝试过的,但我不明白如何循环播放它
    • 如何获得一个“indicator”元素来显示索引的 div 正在显示?我尝试捎带 var 索引并使用一个新数组......但这没有用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    相关资源
    最近更新 更多