【发布时间】:2016-02-12 13:13:09
【问题描述】:
在谈到 Javascript 时,我有点初学者,并且使用在这个网站上找到的示例,我拼凑了一些我能够理解但无法开始工作的简单代码。如果有人能指出我哪里出了问题,我将不胜感激,和/或在必要时解释为什么需要彻底检修。
我的目标是在“轮播”中放置 3 张图像,这些图像会在 4 秒后随着淡入/淡出而改变。我以前能够实现这一点,但无法使其循环。
$(document).ready(function () {
setInterval(function () {
num = (num + 1) % 3;
}, 4000);
if(num > 3) {
num = 1;
}
if(num = 1) {
$(".carousel #slide-1").fadeIn();
$(".carousel #slide-2").fadeOut();
$(".carousel #slide-3").fadeOut();
}
if(num = 2) {
$(".carousel #slide-1").fadeOut();
$(".carousel #slide-2").fadeIn();
$(".carousel #slide-3").fadeOut();
}
if(num = 3) {
$(".carousel #slide-1").fadeOut();
$(".carousel #slide-2").fadeOut();
$(".carousel #slide-3").fadeIn();
}
});
【问题讨论】:
-
它正在工作 - 除了将 num 从 0 循环到 2 之外,它没有做任何事情 - 或者可能没有,因为 num 没有在任何地方声明,所以它只是每 4 秒什么都不做,可能会发出一个控制台错误....在控制台中查找
-
添加 HTML 将有助于获得优化的解决方案
-
你每 4 秒做的唯一一件事是
num = ...;其余代码只运行一次。 -
声明
var num = 0然后删除if (num > 3它永远不会是 0、1 或 2(查找 % 运算符)将if (num = ?更改为if (num == ?因为你需要知道赋值、= 和相等之间的区别 == ... 然后考虑 num % 3 将是 0、1 或 2 的事实 ...因此相应地更改您的ifs ...然后将 if 语句放入setinterval匿名函数,所以它们实际上是被执行的 -
如果所有幻灯片都是直接的并且是
.carousel元素的唯一子元素,var num = 0, numOfSlides = $('.carousel').children().length; setInterval(function() { $('.carousel').eq(num++ % numOfSlides).fadeIn().siblings().fadeOut(); }, 4000);
标签: javascript jquery loops optimization setinterval