我有以下ajax頁面。當定時器到期或點擊按鈕時,表單應該被提交併且定時器應該重新開始倒計時。
由於某些原因,定時器未被重置並變爲負值。有人能告訴我如何解決這個問題嗎?Javascript計時器幫助需要
(代碼是獨立的,你可以複製/粘貼ANS測試,然後在服務器上運行它)
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。 – Robert 2010-12-14 03:33:53
如果我這樣做'sendForm();'每秒調用一次 – Caner 2010-12-14 03:36:36
它對我沒有負面影響。另外,send()似乎也可以工作。 – Kissaki 2010-12-14 03:41:50