我有这段代码:
var playySlideNumber = "1";
var run = function playSlides (playySlideNumber){
$(".slider.secondLayer").css("opacity", "0");
$(".slider.secondLayer.n"+playySlideNumber).css("opacity", "1");
if (playySlideNumber < 5) {
playySlideNumber = parseInt(playySlideNumber) + 1;
} else {playySlideNumber = "1"}
return playySlideNumber
}
setInterval(function(){run(playySlideNumber)}, 3000);
我需要该功能playySlides()
返回playySlideNumber
,以便每次setInterval
运行时它都具有正确的playySlideNumber
。
问题是playySlideNumber
保持不变= "1"
。
此外,使用递归调用setTimeout
的{{1}}会更容易吗?
答案 0 :(得分:2)
你需要删除参数,因为它掩盖了全局变量,并且不需要从run函数返回值,因为它没有在任何地方使用:
var playySlideNumber = "1";
var run = function playSlides(){
$(".slider.secondLayer").css("opacity", "0");
$(".slider.secondLayer.n"+playySlideNumber).css("opacity", "1");
if (playySlideNumber < 5) {
playySlideNumber = parseInt(playySlideNumber) + 1;
} else {playySlideNumber = "1"}
}
setInterval(run, 3000);
答案 1 :(得分:-2)
问题是这个代码第一次运行时,playSlideNumber是一个字符串,然后你试着评估它是否小于5但它永远不会这样,所以它进入else分支放“1”(一个字符串)回到你的变量。