2008-11-23 4 views
1

Я пытаюсь создать обратный отсчет с помощью javascript. Я получил код от here и немного изменил его.Javascript Timing

<script type="text/javascript"> 
var c=10, t; 

function timedCount() { 
    document.getElementById('txt').value=c; 
    c=c-1; 
    t=setInterval("timedCount()",1000); 
} 

function stopCount() { 
    clearInterval(t); 
} 
</script> 

Мне нужно вызвать обратный отсчет, пока пользователь не нажмет на ссылку. Он должен обратный отсчет с 10 на 1 каждую секунду (10,9,8,7,6 ... 0) до тех пор, пока не будет нажата ссылка, но это не так. Кто-нибудь может мне помочь?

EDIT: Кто-нибудь знает, как сделать обратный отсчет после того, как он достигнет 0?

Заранее спасибо.

ответ

6
<script type="text/javascript"> 
var c=10; 
var t; 
function timedCount() 
{ 
    document.getElementById('txt').value=c; 
    c=c-1; 
} 
function startCount() 
{ 
    if (!t) t=setInterval("timedCount()",1000); 
} 
function stopCount() 
{ 
    clearInterval(t); 
    t=null; 
} 
</script> 

Вызов startCount() в OnLoad (или любой другой), когда вы хотите, чтобы счетчик начал. Обратите внимание, что мой startCount и stopCount не создают несколько интервальных таймеров.

Кроме того, элемент с id = txt должен быть полем <input> или <textarea>, чтобы ваш код работал. Если это промежуток, вы должны использовать document.getElementById('txt').innerHTML=c;

Наконец, вы можете захотеть, чтобы timedCount() остановилCount(), если c опускается ниже нуля. Это достаточно просто:

if (c <= 0) stopCount(); 
+0

Предлагаю заменить [setInterval ("timedCount()", 1000); ] с [setInterval (timedCount, 1000); ], потому что нет необходимости оценивать это выражение (мне также не нравятся глобальные переменные и вместо этого написали объект, но это уже другая история) – some 2008-11-23 10:17:04