setInterval中的变量仅在第一次递增

时间:2014-03-30 01:06:28

标签: javascript variables setinterval

我有一个简单的脚本:

var bannerNum = 2;
window.setInterval(function () {
    bannerSwap(bannerNum);
}, 5000);

function bannerSwap(bannerNum) {
    if (bannerNum == 5) {
        bannerNum = 1;
        document.getElementById('b1').style.display = "block";
        document.getElementById('b4').style.display = "none";
        return;
    }
    document.getElementById('b' + (bannerNum - 1)).style.display = "none";
    document.getElementById('b' + bannerNum).style.display = "block";
    bannerNum++;
    return;
}

它只是每5秒循环一次该函数并交换横幅图像(4个div,所有显示:除第一个之外没有,名为b1到b4)。向上拉页面,它第一次切换(bannerNum = 3),但在此之后它永远不会切换。我在最后提醒了bannerNum并且看到它从2切换到3然后它每5秒弹出一次,说它是3次反复。那么为什么不增量?

2 个答案:

答案 0 :(得分:1)

尝试

window.setInterval(function () {
    bannerSwap(bannerNum++);
}, 5000);

删除bannerSwap函数中的bannerNum ++

修改

您的代码无法正常工作,因为您没有修改实际的bannerNum变量,而是修改了您使用相同名称接收的参数。

为使您的代码完全正常工作,您应该执行以下操作之一

  • 在setInterval函数
  • 中对bannerNum进行所有修改
  • bannerSwap签名中删除参数,以便获得全局变量的范围

答案 1 :(得分:0)

如评论中所述,请从bannerNum的参数列表中删除bannerSwap,如下所示:

<script>
var bannerNum = 2;
window.setInterval(function() {
    bannerSwap();
},5000);
function bannerSwap() {
    // Your code here (it will work)
}
</script>