1

我已经尝试了无数不同的方法,并且花了太多时间试图解决可能过于简单的问题。出于某种原因,我无法使以下 setInterval 调用正常工作。它确实调用一次,但不是每 1000 毫秒调用一次。这将有助于一些关于为什么不是每 1 秒(1000 毫秒)调用一次警报的输入

<html>
<head>
<script>
function user(h){
this.userHunger = h;
this.userAction='Move';

this.start=function(){
    this.hungerClockStart();
};
this.hungerClockStart=function(){
    //setInterval(this.updateHungerScreen(),1000);
    this.hungerClock = (setInterval(alert(1),1000));
};

};
var user1=new user(100);
function displayUserHunger(u){
u.start();
}
</script>
</head>
<body>
<h1>Display a User's Hunger:<br></h1>
<div>
<h2 id = 'HungerBarVisual'> </h2>
<button onclick="user1.start()">Start</button>

</div>
</body>
</html>
4

2 回答 2

1

就像是:

setInterval(this.updateHungerScreen(),1000);

表示您可能使用setInterval错误。

这里发生的是返回值this.updateHungerScreen()作为函数调用。所以你可能想要这个:

setInterval(this.updateHungerScreen,1000);

this.updateHungerScreen(没有括号!)是您要调用的函数。


同样setInterval(alert(1),1000)等价于alert(1);setInterval(null,1000)

你可能想要:

setInterval(function () {
    alert(1); // will get called every 1000ms
},1000);
于 2012-11-22T22:19:23.763 回答
0

setInterval接受一个函数对象

this.hungerClock = setInterval(func, 1000);

如果要传递参数,则需要使用额外的匿名函数:

this.hungerClock = setInterval(function(){ alert(1) }, 1000);
于 2012-11-22T22:19:12.470 回答