我目前正在为我参加的游戏开发班做一个点击游戏,我无法弄清楚为什么我的间隔功能拒绝工作。
我想用这个来实现:
每100毫秒一个变量将增加一个数字,乘以另一个变量,让我们使用10,例如i
。
我试过的代码:
var interval = setInterval( increment, 100);
function increment(){
money += 10 * i;
document.getElementById("money").innerHTML = money;
document.getElementById("i").innerHTML = i;
}
这是拒绝工作,我想知道这是定义变量的问题,还是仅仅是语法。
有什么建议吗?
答案 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;
另请注意,++i
和i++
在表达式中使用时会产生一些特殊效果(虽然这超出了此问题的范围)。
答案 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;
}
分别为id
和money
的两个元素才能正常工作。
如果您将尝试执行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;
}