2011-11-20 84 views
0

我試圖用JS做一個倒數計時器,顯然。JavaScript倒數計時器不啓動[代碼包括]

我想我的代碼是正確的,但它不起作用。

目的的代碼: 假設顯示一個計時器遞減,直到其表現出這是在代碼的ALST線DONE中的內容的代碼。

問題:我試過在本地機器上製作一個HTML頁面並進行了測試,但它沒有工作,我也上傳到了我的網站上,它也不能工作。

代碼:

<body> 

<div 
     id="JSPractice5" 
      style="border-style:dotted; 
      padding:10px; 
      font-size:24px; 
      width:200px; 
      text-align:center;"> 
Countdown Starting 
</div> 

<script type="text/javascript"> 
var containerID = "JSPractice5"; 
var number = 100; 
var timerID = setInterval("CountdownTimer()",1000); 
function CountdownTimer() { 
if(number > 1) { 
    number--; 
    ReplaceContentInContainer(containerID,number); //Mark1 
    } 
else { 
    clearInterval(timerID); 
    ReplaceContentInContainer(containerID,'DONE!!'); 
    } 
} 
    </script> 
</body> 

如果該問題的解決方案是容易/愚蠢的,你以爲下的投票,請不要做,因爲我很新的SOF和JS :)

謝謝先進的傢伙。

+2

什麼是'ReplaceContentInContainer',它不在代碼中? – Esailija

+0

什麼是ReplaceContentInContainer?它在別處有定義嗎? – thesteve

+0

其實不,我把它從API中拿出來。 – Sobiaholic

回答

2

你錯過

function ReplaceContentInContainer(id, content) 
{ 
    document.getElementById(id).innerHTML = content; 
} 
+1

適用於我:http://jsfiddle.net/hqbCP/(在演示代碼中,時間值減少到10) – stealthyninja

+1

在尋找某件工作時,我閱讀了「ReplaceContentInContainer」,沒有一個海報提到了關於函數,因爲我是JS的新手(從來沒有學過,只是基於我的Java玩)我直接複製它。謝謝Stealthyninja。我會注意到這一點。 – Sobiaholic

-1
<body> 

<div 
     id="JSPractice5" 
      style="border-style:dotted; 
      padding:10px; 
      font-size:24px; 
      width:200px; 
      text-align:center;"> 
Countdown Starting 
</div> 

<script type="text/javascript"> 
var containerID = "JSPractice5"; 
var number = 100; 

function CountdownTimer() { 
if(number > 1) { 
    number--; 
    ReplaceContentInContainer(containerID,number); 
    } 
else { 
    clearInterval(timerID); 
    ReplaceContentInContainer(containerID,'DONE!!'); 
    } 
} 
var timerID = setInterval(CountdownTimer(),1000); 
    </script> 

</body> 

首先,應該的timerId是CountdownTimer功能後,因爲如果不是你要調用一個不存在的功能,二是功能CountdownTimer should't是在引號中。

+3

這一行:'setInterval(CountdownTimer(),1000);'不起作用。你也不太瞭解'setInterval()'和'setTimeout()'[work](https://developer.mozilla.org/en/window.setInterval),它是'eval()'a字符串在第一個參數中傳遞,或者運行傳遞給它的函數引用(其次是更好的做法)。 –

+1

由於以下原因,Jared是正確的:setInterval的第一個參數應該是對函數的*引用*,而不是其結果 –

+0

是的,這意味着在'setInterval'中沒有'()'。 –

1

重做您的setInterval調用來指定函數本身,而不是包含調用的字符串。

查看http://jsfiddle.net/2zwbV/2/的工作示例。