2010-12-14 18 views
0

次のajaxページがあります。フォームが提出され、タイマーが期限切れになるかボタンがクリックされると、タイマーはカウントダウンを再開します。
何らかの理由で、タイマーがリセットされずにマイナスになります。誰かがこれを修正する方法を教えてもらえますか?JavaScriptタイマーのヘルプが必要

私は私のコメントで述べたように、あなたは<=0を使用する必要があり、

test.htm:


<html> 
<head> 
<script type="text/javascript" src="http://mootools.net/download/get/mootools-core-1.3-full-compat.js"></script> 
</head> 
<body> 
<div id="container"> 
<form id="form" name="form" action="test.htm" method="post"> 
Remaining time: <input type="text" name="clock" size="4">seconds 
<input type="submit" value="submit" ID="questionSubmit"> 
</form> 
<script type="text/javascript"> 
var timeLeft = 10; 
function startClock() { 
    timeLeft--; 
    document.form.clock.value = timeLeft; 
    if(timeLeft == 0) { 
     sendForm(); 
    } 
    else { 
     setTimeout("startClock()", 1000); 
    } 
} 

setTimeout("startClock()", 1000); 
</script> 

<script type="text/javascript"> 
function handleSubmit(e) { 
    e = new Event(e).stop(); 
    sendForm(); 
} 

function sendForm() { 
    $('form').set('send', {onComplete: function(response) { 
     $('container').set('html', response); 
     $('questionSubmit').addEventListener('click', handleSubmit, false); 
     setTimeout("startClock()", 1000); 
    }}); 
    //Send the form. 
    $('form').send(); 
} 

$('questionSubmit').addEventListener('click', handleSubmit, false); 
</script> 
</div> 
</body> 
</html> 
+0

私の最初の推測では、あなたが<= 0の代わりに使用する必要があるということです
<input id="timeLeft" type="hidden" value="<?php echo $time; ?>" />
... ==、あなたが何とか0をスキップする場合に備えて。 – Robert

+0

私は 'sendForm();'が毎秒呼び出されます。 – Caner

+1

私には負の数はカウントされません。また、send()も同様に機能するようです。 – Kissaki

答えて

0

次の追加の呼び出し、次のだろうが、それを修正:

function sendForm() {
/.../
timeLeft = document.getElementById('timeLeft').value;
/.../
}

0

(コードでは、コピー/ペーストANSそれをテストし、その後、サーバー上で実行することができ、スタンドアロンです) 。あなたが返信すると、毎秒sendForm()が呼び出されます。これは意味をなさないので、何か他のことが起こっていると思われます。

私の2番目の観察は、決してtimeLeftをリセットしていないことです。このために良い場所がsendForm

+0

'timeLeft'は次のページから来なければなりません(' sendForm() 'が呼び出されてレスポンスがロードされた後)、その瞬間に値がわかりません。 – Caner

+0

OK、 'sendForm()'の後に 'timeLeft'のハードコードされた値を入れました。今質問は、私がこの値を '応答'からどのように得るかです – Caner

関連する問題