2012-01-14 3 views
1

Хорошо, поэтому на странице есть кнопка, которую я пытаюсь изменить текст для обратного отсчета, сделанного в Javascript. Я довольно новичок в языке (2 дня), и не уверен, что не так с моим кодом. Вместо того, чтобы ждать полной секунды перед повторным повторением, он мгновенно повторяет итерации.Ошибка пользовательского таймера

var c = 15; 
function countDown(e){ 
    if (c!=0){ 
    e.value = 'Reply (' + c + ')'; 
    c--; 
    setTimeout(countdown(e),1000); 
    } 
    else{ 
    e.value = 'Reply'} 
    } 
} 

но мне кажется, что вместо того, чтобы через 15 секунд, как я предполагал, что выстреливает сразу (доказала мне, добавив в alert('a'); в если заявлении я мог видеть кнопку изменения текста)

Я не уверен, что это проблема с Greasemonkey или проблема с моим javascript.

+0

Вы можете «форматировать свой код», добавив каждую строку в четыре пространства или окружив ее обратными окнами. – mrtsherman

+0

Извините, это мой первый пост-код. – user871154

+0

Частый дубликат! –

ответ

3

Ваша проблема с этой линии:

setTimeout(countdown(e),1000); 

countdown(e) является вызов функции обратного отсчета, который возвращает ничтожным. Функция SetTimeout принимает функцию ссылки на и тайм-аут, так что вы должны изменить его на:

setTimeout(countdown, 1000); 

Ваш текущий код вызова отсчет (е) в 15 раз, а затем рекурсивно SetTimeout (пустот, 1000);

Если вам нужно setTimeout передать аргументы (например, e) в вашу функцию, вы можете использовать необязательные параметры после таймаута.

setTimeout(countdown, 1000, e); 
+1

@ user871154, вы можете попробовать это [здесь] (http://jsfiddle.net/3UpG6/1/). – PrimosK

+0

Извините, я очень сильно отследил. Это прекрасно работает, спасибо, что помогли этой новичке. – user871154

 Смежные вопросы

  • Нет связанных вопросов^_^