Javascript 无法停止js代码

Javascript 无法停止js代码,javascript,Javascript,我有一个名为count的div,现在我想把它的值从0增加到10。我就是这样做的: <script> var i = 0; var refreshId = function() { $('#count').text(i); i++; if (i > 10) { clearInterval(refreshId); } }; $(document).ready(f

我有一个名为count的div,现在我想把它的值从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>
但计数器并没有停止。怎么了?

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>
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>
试试这个:

在控制台中粘贴时按预期工作

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

在控制台中粘贴时按预期工作

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

嗯,除了您编写的代码之外,我不知道这段代码中到底发生了什么,但纯粹从观察来看,似乎在I==10之后调用了refreshID。

嗯,除了您编写的代码之外,我不知道这段代码中到底发生了什么,但纯粹从观察来看,似乎在I==10之后调用了refreshID。

由于startTime将运行500ml,请在其中创建一个计数器,将其递增到10,然后清除间隔

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

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

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

由于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;  
}

另一个选项是使用递归设置超时:


另一个选项是使用递归设置超时:


需要一个intervalId,setInterval将其作为返回值提供,而不是绑定到该interval的函数。需要一个intervalId,setInterval提供该值作为其返回值,而不是绑定到该interval的函数。建议还提供一个代码片段解释您更改了什么?为什么?原版有什么问题?。代码转储本身并不一定容易理解。@JonathanLonowski你说得对,谢谢!建议还提供一个带有代码片段的解释,您更改了什么?为什么?原版有什么问题?。代码转储本身并不一定容易理解。@JonathanLonowski你说得对,谢谢!