2012-11-30 76 views
0

我想弄清楚一種方法來讓我的倒數計時器重新啓動時,25再次達到0.我不知道我得到錯誤,但它不會工作。倒計時計時器停在零我想讓它重置

的Javascript

window.onload = function() { 
    startCountDown(25, 1000, myFunction); 
} 

function startCountDown(i, p, f) { 
    var pause = p; 
    var fn = f; 
    var countDownObj = document.getElementById("countDown"); 

    countDownObj.count = function(i) { 
     //write out count 
     countDownObj.innerHTML = i; 
     if (i == 0) { 
     //execute function 
     fn(); 
     //stop 
     return; 
    } 
    setTimeout(function() { 
     // repeat 
     countDownObj.count(i - 1); 
     }, 
     pause 
    ); 
    } 
    //set it going 
    countDownObj.count(i); 
} 

function myFunction(){}; 
</script> 

HTML

<div id="countDown"></div> 
+0

檢查了這一點你的下一個問題:http://en.wikipedia.org/wiki/Indent_style – elclanrs

+1

「這行不通」 =>倒不如說是什麼_does_ –

+0

回覆'countDownObj .count = function(i)...'將非標準屬性添加到主機對象不是一個好主意,更好地使用自己的對象來引用元素。 – RobG

回答

1

試試這個,計時器重新啓動後0

http://jsfiddle.net/GdkAH/1/

全碼:

window.onload = function() { 
startCountDown(25, 1000, myFunction); 
} 

function startCountDown(i, p, f) { 
    var pause = p; 
    var fn = f; 
    var countDownObj = document.getElementById("countDown"); 

    countDownObj.count = function(i) { 
    // write out count 
    countDownObj.innerHTML = i; 
    if (i == 0) { 
    // execute function 
     fn(); 
     startCountDown(25, 1000, myFunction); 
     // stop 
     return; 
    } 
    setTimeout(function() { 
      // repeat 
      countDownObj.count(i - 1); 
    }, pause); 
} 
// set it going 
countDownObj.count(i); 
} 

function myFunction(){}; 

​ 
1

我沒有看到你復位計數器。當你的計數器下降到0時,它執行該功能並返回。相反,你要執行的功能 - >計數器復位 - >通過簡單的下FN()加入I = 25返回

你可以這樣做:

function startCountDown(i, p, f) { 
var pause = p; 
var fn = f; 
var countDownObj = document.getElementById("countDown"); 

countDownObj.count = function(i) { 
// write out count 
countDownObj.innerHTML = i; 
if (i == 0) { 
// execute function 
fn(); 
i = 25; 
// stop 
return; 
} 
setTimeout(function() { 
// repeat 
countDownObj.count(i - 1); 
}, 
pause 
); 
} 
// set it going 
在@Muthu庫馬蘭代碼
1

沒有顯示倒數後爲零1。您可以更新到這一點:

if (i < 0) { 
// execute function 
    fn(); 
    startCountDown(10, 1000, myFunction); 
    // stop 
    return; 
} 
1

的主要原因是使用的setInterval的連續運行的計時器,使其儘可能地更新系統時鐘爲單位,通常爲1秒,但也許調整區間更長的時間。在這種情況下,這似乎沒有必要,所以只需使用setInterval。

下面是一個函數,它不向元素中添加非標準屬性,它可以使用window.onload中的函數表達式來調用,因此完全避免使用全局變量(並不是說這裏有太多要點,但是有些人喜歡將它們最小化)。

var runTimer = (function() { 

    var element, count = 0; 

    return function(i, p, f) { 
    element = document.getElementById('countDown'); 

    setInterval(function() { 
     element.innerHTML = i - (count % i); 
     if (count && !(count % i)) { 
     f(); 
     } 
     count++; 
    }, p); 
    } 
}()); 

function foo() { 
    console.log('foo'); 
} 

window.onload = function() { 
    runTimer(25, 1000, foo); 
}