2014-03-30 48 views
0

我有一个简单的脚本:变量的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个格,都显示:没有,除了第一,命名为b1至b4)。拉起页面,它会首次切换(bannerNum = 3),但在此之后切换。我在最后提醒bannerNum,看到它从2切换到3,然后每5秒弹出一次,说它反复3次。那为什么它不增加?

+3

从函数定义的arg列表中删除'bannerNum'。 IOW只是'功能bannerSwap(){..}' –

回答

1

尝试

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

取出bannerNum ++的bannerSwap功能

编辑

您的代码不起作用,因为您并未修改实际的bannerNum变量,而是您收到的具有相同名称的参数。

为您的代码完全工作,你应该做到以下几点之一,

  • 让所有的修改bannerNum的setInterval函数里面
  • bannerSwap签名删除参数,所以您将获得范围的全局变量
+0

这工作 - 但我不得不将bannerNum的原始值更改为1而不是2,因为它调用函数时会增加。谢谢! – linus72982

0

正如评论说,从bannerSwap的参数列表中删除bannerNum这样的:

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