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);