2014-09-13 90 views
1
  1. 我在.js文件中的函數應該顯示從10倒數 - 0。一旦它擊中0,應該開闢第二頁。我沒有打開已寫入網頁的部分,但那不是我目前的問題。我的問題是,倒計時將顯示數字1,並沒有別的。我不確定爲什麼。倒計時功能實際上並不倒計時

  2. 這裏的倒計時功能

    function startCountdown() { 
        for (var i = 10; i >= 0; i--) { 
         document.getElementById("countdown").value = i; 
        } 
    } 
    
  3. 下面是調用它

    function startAdPage() { 
        setInterval(changeAd(), 2000); 
        setInterval(startCountdown(), 1000); 
    } 
    
  4. 最後,這裏是它發送到HTML代碼的功能。一切都是通過調用onload方法的body標籤開始的。我知道這個部分是有效的,因爲我已經做了一些其他工作正常的東西。

    <div id="counter"> 
        <p>The Central Valley Realtors home page will display in 
        <input type="text" value="" class="countdown"/> 
        seconds</p> 
    </div> 
    
+0

執行速度足夠快,您可以看到,將警告框放在循環中,您將看到它彈出預期值。 – nilobarp 2014-09-13 00:18:52

回答

2

的第一個參數setInterval是一個函數。你沒有傳遞函數,你調用函數並傳遞返回的函數,因爲函數名後面有()

另外,您並未等待倒計時字段的更新。 Javascript是單線程的,頁面不會更新,直到腳本返回。您需要:

function startAdPage(){ 
    var curCounter = 10; 
    function startCountdown() { 
     document.getElementById("countdown").value = curCounter; 
     curCounter--; 
     if (curCounter == 0) { 
      clearInterval(countdownInterval); 
     } 
    } 
    setInterval(changeAd, 2000); 
    var countdownInterval = setInterval(startCountdown, 1000); 

} 
+0

出於某種原因,倒數計時器中的文本加載爲1並永不改變 – Historiun 2014-09-13 00:50:38

+0

沒關係。我修正了 – Historiun 2014-09-13 00:59:26

+0

我剛剛嘗試過,唯一遇到的問題是您在輸入字段中沒有'id =「countdown」'。 – Barmar 2014-09-13 01:00:24

0

你的startCountdown內環路一路狂奔到循環的結束,所以價值最終0。此外,你應該通過其中一個匿名函數或者未執行的功能setIntervalclearInterval沒有參數。當您在函數名稱的末尾添加()時,您正在執行該函數。更改的<input type='text' class='countdown' /><input type='text' id='countdown' />,則嘗試以下操作:

function countdown(begin, end, interval, outputElement){ 
    var repeat = setInterval(function(){ 
    if(outputElement.innerHTML){ 
     outputElement.innerHTML = begin--; 
    } 
    else{ 
     outputElement.value = begin--; 
    } 
    if(begin === end)clearInterval(repeat); 
    }, interval); 
} 
countdown(10, 0, 1000, document.getElementById('countdown'));