【问题标题】:carousel setInterval autoplay not working轮播 setInterval 自动播放不起作用
【发布时间】:2015-10-12 02:59:03
【问题描述】:

代码:http://jsfiddle.net/n2m4absf/(不会起作用,这是为了代码显示目的而链接的)。尝试使用:

setInterval(function(){slideCard();}
, 5000);

这个轮播是一个 div 框,它在 -883px 的左边距块中移动。我希望它每 5 秒左右自动滚动一次(认为设置间隔将是使用的逻辑)。

我还有其他 js 可以处理点击功能以手动导航轮播,但我认为它们不应该影响自动播放。然而,它们确实与上述 js 存在于同一个文件中。

只需要让自动播放工作,不知道为什么我的 js 不这样做。

【问题讨论】:

  • Uncaught ReferenceError: $ is not defined
  • 变量count应该在slideCard方法之外声明
  • 你需要首先在你的小提琴中包含 jQuery。
  • jquery 包含在我的项目中,这只是一个 sn-p
  • @heug 如果您需要适当的解决方案,我们还需要 css 部分

标签: javascript jquery carousel setinterval autoplay


【解决方案1】:

脚本中存在多个问题。

  1. 变量 count 被声明为方法的本地变量,因此在每次调用时,它都会启动到 0,从而导致第一个 if 块执行。
  2. 由于您使用了不同的 if 块,每个 if 块将在每次迭代中进行评估,因此只有最后一个块的值会受到影响

由于您没有边距值的恒定逻辑,我认为您可以使用边距值数组,例如

var slide = $('div.inner > ul');

var count = 0,
    margins = ['-883px', '-1686px', 0];

function slideCard() {
    slide.css('margin-left', margins[count++ % 3]);
};

setInterval(function () {
    slideCard();
}, 1000);

【讨论】:

  • 谢谢!!这个聪明的模数逻辑对我有用。现在只需要使手动切换点与当前显示的数字幻灯片匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多