2014-03-30 83 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>