2014-02-02 3 views
0

OK спасибо всем. Проблема решена после того, как я вижу комментарий.Таймер обратного отсчета не работает

Мой таймер обратного отсчета не работает.

<script type="text/javascript"> 

function timer(){ 
var count = document.getElementById("numb").value; 
var counter=setInterval(timer, 1000); 
var detik = count; 
    do { 
     count--; 
     document.getElementById("timer").innerHTML=count + " secs"; 
     if (count<=0) { 
      count = detik+1; 
     } 
    } while (count===detik+1); 
} 

</script> 

<input type="text" id="numb" name="numb" value=""></input> 
<input type="button" value="click" onClick="timer();"/> 
<span id="timer"></span> 
+1

Связанный: не используйте 'setInterval' чтобы вручную взять 1 от' i' каждый 1 второй, потому что вы думаете, он будет выполнен точно каждый второй, но реальность такова, что он выиграл «т. –

+1

Не очень сложно найти хороший пример: https: //stackoverflow.com/questions/1191865/code-for-a-simple-javascript-countdown-timer – sdespont

+0

http://jsfiddle.net/2J9gg/ – dfsq

ответ

-1

Я изменил его, как это и это работает:

window.timer = function timer() { 
    var count = document.getElementById("numb").value; 
    var cTimer = document.getElementById("timer").innerHTML; 

    if(cTimer && !isNaN(parseInt(cTimer))) cTimer = parseInt(cTimer) - 1; 
    else cTimer = count; 
    if(cTimer==0) return; 
    document.getElementById("timer").innerHTML = cTimer + " secs"; 
    setTimeout(timer, 1000); 
} 

и это ваш рабочий DEMO.

+0

нет, я не это имею в виду. значение должно вводить не параметр. user3142044

+0

@ user3142044: снова проверьте мой ответ. –

0

Были проблемы с вашей функцией таймера. Проверьте это fiddle.

HTML

<input type="text" id="url" name="url" value=""></input> 
<input type="button" value="click" onClick="timer();" /> 
<span id="timer"></span> 

JavaScript

function timer() { 
clearInterval(counter); 
var count = parseInt(document.getElementById("url").value); 
document.getElementById("timer").innerHTML = count + " secs"; 
var counter = setInterval(function() { 
    count = count - 1; 
    if (count <= 0) { 
     clearInterval(counter); 
     return; 
    } 
    document.getElementById("timer").innerHTML = count + " secs"; 
}, 1000); 

};

0

В вашем коде есть logical error. Скажем, вы дали 5 в качестве входных данных и нажали кнопку. count магазины 5 и так же есть detik. (4). Затем это отображается на экране. Условие if не выполняется. Но условие do-while также неверно. Следовательно, он выходит из цикла.

Весь этот процесс повторяется снова, так как у вас есть setInterval для функции. В целом вы видите, что счетчик остается тем же.

Что вам нужно сделать, это:

HTML:

<input type="text" id="numb" name="numb" value=""></input> 
<input type="button" value="click" onClick="start_timer();"/> 
<span id="timer"></span> 

JS:

var count; 
var intrv; 
function start_timer(){ 
    count = document.getElementById("numb").value; 
    count = parseInt(count);//convert to int.. 
    intrv = setInterval(timer, 1000); 
} 
function timer(){ 
    document.getElementById("timer").innerHTML = count + " secs"; 
    count--; 
    if(count<0) 
    { 
     clearInterval(intrv); 
    } 
} 
0

JavaScript
var count = 0; 
var inter; 
function timer1(flag){ 
    if(flag == 1) 
    { 
     count = document.getElementById("url").value; 
     console.log(count); 
     flag = 0; 
    } 
    count--; 
    document.getElementById("timer").innerHTML= count + " secs"; 
    if(count<=0){ 
     clearTimeout(inter); 
    }else{ 
     inter = setTimeout(function(){timer1(0)},1000); 
    } 
} 

HTML

<input type="text" id="url" name="url" value=""> 
<input type="button" value="click" onclick="timer1(1);"/> 
<div id="timer"></div> 
Смежные вопросы