倒数计时器未运行

时间:2014-02-02 08:01:30

标签: javascript countdown

好的,谢谢大家。我看到评论后问题就解决了。

我的倒数计时器未运行。

<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>

4 个答案:

答案 0 :(得分: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);

};

答案 1 :(得分:0)

代码中有logical error。说,你给了5作为输入,然后点击了按钮。 count存储5等等detik

do-while循环内,计数递减,(现在为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);
    }
}

答案 2 :(得分: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>

答案 3 :(得分:-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