Требуется помощь таймера Javascript - PullRequest
0 голосов
/ 14 декабря 2010

У меня есть следующая страница 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>

Ответы [ 2 ]

0 голосов
/ 15 декабря 2010

Исправлены следующие дополнения:
<input id="timeLeft" type="hidden" value="<?php echo $time; ?>" />
...

function sendForm() {<br> /<em>...</em>/<br> timeLeft = document.getElementById('timeLeft').value;<br> /<em>...</em>/<br> }

0 голосов
/ 14 декабря 2010

Как я уже упоминал в моем комментарии, вы должны использовать <=0.Как вы ответили, sendForm() затем вызывается каждую секунду.Это не имеет смысла, поэтому я подозреваю, что происходит что-то еще

Мое второе наблюдение - вы никогда не сбрасываете timeLeft.Хорошим местом для этого будет следующий звонок sendForm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...