【问题标题】:How do you integrate an incrementing variable into a paragraph如何将递增变量整合到段落中
【发布时间】:2017-12-19 00:42:06
【问题描述】:

我正在尝试制作一款类似于 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>

【问题讨论】:

  • 它不起作用,因为您在调用setInterval 时调用了increment --- 编辑:可能不够清楚:setInterval 期望定义一个函数,但是您正在运行该函数,该函数运行一次
  • 哪个部分不起作用?您收到错误消息吗?如果有,它说明了什么?
  • 另外,你的 HTML 标签是错误的

标签: javascript html


【解决方案1】:

你有两个问题:

  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>

【讨论】:

  • 为什么不需要括号?
  • @BramVanroy 谢谢,我忘记了那部分。现在包括在内。
【解决方案2】:

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>

【讨论】:

  • 您可能想解释一下为什么这是必要的。
猜你喜欢
  • 1970-01-01
  • 2013-08-02
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-08
  • 1970-01-01
  • 2021-09-06
相关资源
最近更新 更多