Javascript间隔功能不起作用

时间:2017-11-13 18:53:48

标签: javascript

我目前正在为我参加的游戏开发班做一个点击游戏,我无法弄清楚为什么我的间隔功能拒绝工作。

我想用这个来实现:

每100毫秒一个变量将增加一个数字,乘以另一个变量,让我们使用10,例如i

我试过的代码:

var interval = setInterval( increment, 100);

function increment(){
  money += 10 * i;
  document.getElementById("money").innerHTML = money;
  document.getElementById("i").innerHTML = i;
}

这是拒绝工作,我想知道这是定义变量的问题,还是仅仅是语法。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

您需要初始化i(以及money)。您可能还希望增加i,以便在每个时间间隔获得不同的值。

var interval = setInterval(increment, 100);
var money = 0;
var i = 0;

function increment(){
    money += 10 * i
    document.getElementById("money").innerHTML = money;
    document.getElementById("i").innerHTML = i;
    i++; // increment
}

您可以通过其他几种方式增加i

i = i + 1;
i += 1;
++i;

另请注意,++ii++在表达式中使用时会产生一些特殊效果(虽然这超出了此问题的范围)。

答案 1 :(得分:0)

你必须定义你的两个变量" money"和"我"使用默认值。 目前您正在尝试使用未定义的值递增未定义的变量。 请跟吼:

var interval = setInterval( increment, 100);
var money = 0
var i = 10;
function increment(){
 money += 10 * i
 document.getElementById("money").innerHTML = money;
 document.getElementById("i").innerHTML = i;
}

答案 2 :(得分:0)

根据您的代码:

<tr ng-repeat="fruit in pairs">
    <th>{{fruit.id}}</th> <!-- Only meant to show that you have the pairs now -->
    <th>{{fruit.value}}</th>

您的评论:

  

我和钱是通过var标签全局定义的   document.getelementbyid标签。记录的控制台错误是:未捕获   TypeError:无法设置null

的属性'innerHTML'

您需要有var interval = setInterval( increment, 100); function increment(){ money += 10 * i; document.getElementById("money").innerHTML = money; document.getElementById("i").innerHTML = i; } 分别为idmoney的两个元素才能正常工作。

如果您将尝试执行i并且ID为money的元素不存在,则会抛出您在控制台中看到的错误。

作为预防措施,您可以按如下方式编写函数代码:

document.getElementById("money").innerHTML = money;

由于var interval = setInterval( increment, 100); function increment(){ money += 10 * i; const elM = document.getElementById("money") if(elM) elM.innerHTML = money; const elI = document.getElementById("i") if(elI) elI.innerHTML = i; } money变量未定义而导致的其他可能错误,其他社区成员已对此进行了解释。

i
let interval = setInterval(increment, 100);
let money = 10;
let i = 1;

function increment() {
  money += 10 * i;
  const elM = document.getElementById("money")
  if(elM) elM.innerHTML = money;
  const elI = document.getElementById("i")
  if(elI) elI.innerHTML = i;
}