变量dos'即使我可以返回更新后的值,也不会改变

Variable doesn't change even though I can return the updated value

本文关键字:改变 更新 返回 dos 我可以 变量      更新时间:2023-09-26

我有这个代码:

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"

此外,使用递归调用playySlides()setTimeout会更容易吗?

您需要删除参数,因为它覆盖了全局变量,并且不需要从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);

问题是,第一次运行此代码时,playSlideNumber是一个字符串,然后您尝试评估它是否小于5,但永远不会小于5,所以它进入else分支,将"1"(字符串)放回变量中。