Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要Javascript计时器帮助_Javascript_Ajax_Mootools - Fatal编程技术网

需要Javascript计时器帮助

需要Javascript计时器帮助,javascript,ajax,mootools,Javascript,Ajax,Mootools,我有下面的ajax页面。当计时器过期或单击按钮时,应提交表单并重新启动计时器倒计时。 由于某种原因,计时器没有复位,而是变为负数。有人能告诉我怎么解决这个问题吗 (代码是独立的,您可以复制/粘贴并测试它,然后在服务器上运行它) test.htm: <html> <head> <script type="text/javascript" src="http://mootools.net/download/get/mootools-core-1.3-full-compat.js"

我有下面的ajax页面。当计时器过期或单击按钮时,应提交表单并重新启动计时器倒计时。
由于某种原因,计时器没有复位,而是变为负数。有人能告诉我怎么解决这个问题吗

(代码是独立的,您可以复制/粘贴并测试它,然后在服务器上运行它)

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>

剩余时间:秒
var timeLeft=10;
函数startClock(){
时间限制--;
document.form.clock.value=timeLeft;
if(timeLeft==0){
sendForm();
}
否则{
setTimeout(“startClock()”,1000);
}
}
setTimeout(“startClock()”,1000);
函数handleSubmit(e){
e=新事件(e).stop();
sendForm();
}
函数sendForm(){
$('form').set('send',{onComplete:function(response){
$('container').set('html',response);
$('questionSubmit')。addEventListener('click',handleSubmit,false);
setTimeout(“startClock()”,1000);
}});
//发送表格。
$('form').send();
}
$('questionSubmit')。addEventListener('click',handleSubmit,false);

正如我在评论中提到的,您应该使用以下添加内容来修复它:

我的第一个猜测是,如果我这样做,您应该使用
sendForm()每秒调用一次,对我来说它不算负数。此外,send()似乎也能正常工作。不相关,但替换setTimeout(“startClock()”,1000);设置超时(StartLock,1000);这将使您的代码不是从1999年开始的。它是否应该重定向您(表单提交)?还是应该是AJAX提交?(可能不会)。为什么要在页面离开时(提交时)重置计时器?
timeLeft
应该来自下一页(即在调用
sendForm()
并加载响应之后),因此在那一刻我不知道该值。好的,在
sendForm()之后为
timeLeft
添加一个硬编码值是有效的。现在的问题是如何从
response