Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript setInterval中的变量仅第一次递增_Javascript_Variables_Setinterval - Fatal编程技术网

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

Javascript setInterval中的变量仅第一次递增,javascript,variables,setinterval,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";

我有一个简单的脚本:

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个分区,所有显示:除第一个分区外,无其他分区,命名为b1到b4)。向上拉页面时,它会第一次切换(bannerNum=3),但之后再也不会切换。我在最后提醒了bannerNum,看到它从2变为3,然后每隔5秒就弹出一次,一遍又一遍地说是3。那么为什么不递增呢?

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

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

var bannerNum=2;
setInterval(函数(){
bannerSwap();
},5000);
函数bannerSwap(){
//你的代码在这里(它会工作)
}
试试看

删除bannerSwap函数中的bannerNum+

编辑

您的代码不起作用,因为您没有修改实际的
bannerNum
变量,而是修改您收到的同名参数

要使代码完全正常工作,应执行以下操作之一:

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

从函数定义的参数列表中删除
bannerNum
。只需
函数bannerSwap(){..}
就可以了,但我必须将bannerNum的原始值改为1,而不是2,因为调用函数时它会递增。谢谢
window.setInterval(function () {
    bannerSwap(bannerNum++);
}, 5000);