2011-09-04 37 views
0

是30秒運行一次,一旦它到達0我無法弄清楚如何獲得當按鈕被按下,而不是在頁面加載它開始顯示一條消息,一個簡單的JavaScript計時器。任何幫助表示讚賞:)修復計時器開始在頁面加載

<script type="text/javascript"> 
var sec = 30; // set the seconds 
var min = 00; // set the minutes 

function countDown() { 
    sec--; 
    if (sec == -01) { 
    sec = 59; 
    min = min - 1; 
    } else { 
    min = min; 
    } 
if (sec<=9) { sec = "0" + sec; } 
    time = (min<=9 ? "0" + min : min) + " min and " + sec + " sec "; 
if (document.getElementById) { theTime.innerHTML = time; } 
    SD=window.setTimeout("countDown();", 1000); 
if (min == '00' && sec == '00') { sec = "00"; window.clearTimeout(SD); alert("Too slow."); } 
} 

function addLoadEvent(func) { 
    var oldonload = window.onload; 
    if (typeof window.onload != 'function') { 
    window.onload = func; 
    } else { 
    window.onload = function() { 
     if (oldonload) { 
     oldonload(); 
     } 
     func(); 
    } 
    } 
} 

addLoadEvent(function() { 
    countDown(); 
}); 
</script> 
+3

主要問題在於,您應該*分析問題,然後設計解決方案*。不要開始編碼馬上,你最終的代碼,如上圖所示。請檢查您的代碼並刪除所有冗餘部分。你在這裏讓自己變得太難了。有噸左右倒計時定時器和許多不一樣複雜你的教程。 ) –

回答

0

添加事件偵聽器,負載功能的按鍵,然後調用countDown方法

addLoadEvent(function() { 
    var el = document.getElementById("startButton"); 
    el.addEventListener("click", countDown, false); 
}); 

這裏完整的例子link

+0

謝謝SirLisko,這幫助了很多:) – Draknyte1

1
<button onclick='countDown();'>Click Me</button> 

而就完全不叫addLoadEvent()。

+0

在點擊開始時,時間顯示在我的跨度爲約0.2秒,然後消失....

​​ 時間離開= <跨度ID = 「theTime」 類= 「timeClass」/> ​​
<輸入值= 「開始」 類型= 「提交」 名稱= 「開始」 的onClick = 'COUNTDOWN();'/>
Draknyte1

+0

你刪除呼叫到addLoadEvent()?你有計時器的代碼有一個全球性的計時器 - 它只會倒計時一次,將計算越快越你怎麼稱呼它。 – Chris

+0

你提供的代碼中沒有任何地方爲'theTime'設置了一個值,它可能是一個元素。爲什麼要檢查函數的每次運行是否存在document.getElementById?這完全沒有意義。 – Chris

0

這裏有一個full sample與啓動/停止和剩餘時間顯示。

var gTimer = null 

function endOfTimer() { 
    console.log("here"); 
    window.alert('Too slow'); 
} 

function start() { 
    gTimer = window.setTimeout('endOfTimer', 1 * 1000); 
} 
相關問題