2011-09-04 7 views
0

30秒間実行され、0になったメッセージを表示するシンプルなJavascriptタイマー。pageloadではなくボタンを押したときに開始する方法がわかりません。すべてのヘルプは:)ページロードから開始する修正タイマー

<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

追加イベント負荷機能のボタンにリスナー、その後呼び出しここでカウントダウン

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" /> ....消えます ​​
<入力値= "スタート" タイプ= "提出" NAME = "スタート" のonClick = 'COUNTDOWN();' />
Draknyte1

+0

はあなたがへの呼び出しを削除しましたaddLoadEvent()?あなたが持っているタイマーコードは、グローバルタイマーを持っています - それは1回だけカウントダウンし、あなたがそれを呼び出すほど速くカウントされます。 – 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); 
} 
関連する問題