如何将增量变量集成到段落中

问题描述 投票:1回答:2

我想做一个闲置的游戏,而不是像 candy box。我会在页面的一侧有一个数字,每秒上升一个。但是,下面显示的代码似乎不起作用。谁能告诉我它为什么不起作用;如何解决它以及从哪里获取信息。先感谢您。

<script type="text/javascript">
 var i = 0;

 function increment(){
    i++;
    document.getElementById('money').innerHTML = i;
 }

 setInterval(increment(), 1000);
</script> 
        <h2><u>The best game of the century</u></h2>
        <p>you have &#163;<span id="money"></span>.</p>
    </body>
</html>
javascript html
2个回答
4
投票

你有两个问题:

  1. 您在呈现DOM之前调用脚本,因此在脚本运行时,没有ID为money的元素。
  2. 在你的setInterval调用中,你只需要没有括号的函数名(increment)。包括括号(如increment())仅在该特定时刻调用函数,而不是在每个间隔调用它来调用它。 (有关更多详细信息,请参阅the Microsoft page on setInterval。)

看到这段代码:

<h2><u>The best game of the century</u></h2>
<p>you have &#163;<span id="money"></span>.</p>

<script type="text/javascript">
  var i = 0;

  function increment() {
    i++;
    document.getElementById('money').innerHTML = i;
  }

  setInterval(increment, 1000);
</script>

3
投票

setInterval(increment(), 1000);改为setInterval(increment, 1000);

它没有工作,因为根据文件https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval它需要一个函数引用来执行..但是像这样调用函数increment()只会执行一次,并且将使用该函数的返回值,该函数将为null并且不打算希望这样清除它

var i = 0;

 function increment(){
    //console.log(i);
    i++;
    document.getElementById('money').innerHTML = i;
 }

 setInterval(increment, 1000);
<h2><u>The best game of the century</u></h2>
        <p>you have &#163;<span id="money"></span>.</p>
© www.soinside.com 2019 - 2024. All rights reserved.