<html>
    <body>
        <a id="haha">5</a>
        <script type="text/javascript">
            var myVar = setInterval(function(){apa()}, 1000);
            var f = 5;

            function apa() {
                document.getElementById("haha").innerHTML = f;
                f--;
                apa();
            }
        </script>
    </body>
</html>


我试图用计时器和减量进行倒数,但输出不是整数(5、4、3、2、1 ......),而是-336048等。
我该如何解决?

最佳答案

不应在apa()内部调用apa,它会创建无限递归。 setInterval()将在1秒的间隔内调用apa,因此无需再次调用。

//also there is no need to use a anonymous function you can just say
//var myVar = setInterval(apa, 1000);
var myVar = setInterval(function () {
    apa()
}, 1000);
var f = 5;

function apa() {
    document.getElementById("haha").innerHTML = f;
    f--;
}




var myVar = setInterval(apa, 1000); //just pass the apa reference to setInterval
var f = 5;

function apa() {
  document.getElementById("haha").innerHTML = f;
  f--;
}

<a id="haha">5</a>

10-07 14:46