无法停止js代码

时间:2014-09-20 13:21:32

标签: javascript

我已将div称为"count",现在我想将其值从0增加到10.这就是我的做法:

<script>
    var i = 0;
    var refreshId = function() {
        $('#count').text(i);
        i++;
        if (i > 10) {
            clearInterval(refreshId);
        }
    };

    $(document).ready(function() {
        setInterval(refreshId, 500);
    });
</script>

但是反击并没有停止。怎么了?

5 个答案:

答案 0 :(得分:5)

clearInterval()获取setInterval()函数返回的标识符。

<script>
    var i = 0;
    var refreshId;
    var refreshFunction = function() {
        $('#count').text(i);
        i++;
        if (i > 10) {
            clearInterval(refreshId);
        }
    };

    $(document).ready(function() {
        refreshId = setInterval(refreshFunction, 500);
    });
</script>

答案 1 :(得分:1)

试试这个:

粘贴到控制台时按预期工作。

    var i = 0;
    var refreshId = function() {
        $('#count').text(i);
        i++;
        console.log(i);
        if (i > 10) {
            clearInterval(a);
        }
    };
    a = setInterval(refreshId, 500);

答案 2 :(得分:1)

由于startTime()将运行500mls,使计数器在其内部增加到10,然后清除间隔。

var counter = 0;
var tt=setInterval(function(){startTime()},500);

function startTime()
{
    if(counter == 10) {
        clearInterval(tt);
    } else {
        counter++;
    }

    document.getElementById('count').innerHTML = counter;  
}

答案 3 :(得分:0)

嗯,我不知道这段代码到底发生了什么(除了你已经写过的内容),但纯粹从观察中看来,看起来似乎是在i ==之后调用了refreshID 10。

答案 4 :(得分:0)

另一个选择是使用递归setTimeout

var i = 0;
var refreshFunction = function() {
    $('#count').text(i);
    i++;
    if (i <= 10) {
        setTimeout(refreshFunction, 500);
    }
};

$(document).ready(function() {
    setTimeout(refreshFunction, 500);
});