无法使setInterval在给定的上下文中工作

时间:2012-11-22 22:16:50

标签: javascript object setinterval

我已经尝试了无数不同的方法,花了太多时间试图解决可能过于简单的事情。出于某种原因,我无法让以下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>

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

setInterval使用函数对象

this.hungerClock = setInterval(func, 1000);

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

this.hungerClock = setInterval(function(){ alert(1) }, 1000);