即使我可以返回更新后的值

时间:2016-05-13 14:16:05

标签: javascript

我有这段代码:

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}}会更容易吗?

2 个答案:

答案 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”(一个字符串)回到你的变量。