javascript setInterval 函数对我不起作用

标签 javascript

我尝试创建幻灯片,我需要通过新参数重试我的函数,但是当我尝试使用 setInterval() 函数时,它只运行一次。为什么真的?

var sIndex = 0;
var slide = document.getElementsByClassName('slide');

function slider(n) {
  if (sIndex + n >= 0 && sIndex + n <= slide.length - 1) {
    slide[sIndex].style.display = "none";
    sIndex += n;
    slide[sIndex].style.display = "block";
  } else if (sIndex + n < 0) {
    slide[sIndex].style.display = "none";
    sIndex = slide.length - 1;
    slide[sIndex].style.display = "block";

  } else if (sIndex + n > slide.length - 1) {
    slide[sIndex].style.display = "none";
    sIndex = 0;
    slide[sIndex].style.display = "block";
  }
}
setInterval(function() {
  slider(sIndex);
}, 2000);

最佳答案

sIndex 始终保持为 0 查看您的代码。

var sIndex = 0;
var slide = document.getElementsByClassName('slide');

function slider(n) {
  // first run: n=0 plus sIndex=0, leads to sIndex stays 0 every loop
  if (sIndex + n >= 0 && sIndex + n <= slide.length - 1) {
    slide[sIndex].style.display = "none";
    sIndex += n;
    slide[sIndex].style.display = "block";
  } else if (sIndex + n < 0) {
    slide[sIndex].style.display = "none";
    sIndex = slide.length - 1;
    slide[sIndex].style.display = "block";

  } else if (sIndex + n > slide.length - 1) {
    slide[sIndex].style.display = "none";
    sIndex = 0;
    slide[sIndex].style.display = "block";
  }
  console.log(new Date(), sIndex)
}
setInterval(function() {
  slider(sIndex);
}, 2000);
<div class="slide"></div>

编辑:我的回答给出了原因,但没有解决方案。 @Satpal 的代码给出了一个:删除 n 并添加 1。

关于javascript setInterval 函数对我不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41392749/

相关文章:

javascript - createElement 的值(value)是什么?

javascript - 获取数组对象类型脚本中的第一个索引

javascript - Sequelize - 两个 ID 上的双连接表

javascript - 如何将占位符属性添加到 CKEditor 的实例?

javascript - Angular.js 客户端高度

javascript - 从 WFS 加载时,不会维护 OpenLayers 几何名称

javascript - angularjs - ng-repeat 未在数组更新时更新

javascript - 当 anchor 到达页面顶部时,获取 div 的背景颜色以淡入不同的颜色

javascript - 如何在ReactJS中通过ref动态设置State

javascript - 使用 Chrome 循环自定义协议(protocol)