2012-11-22 53 views
1

我已經嘗試了無數不同的方法來解決這個問題,並花費了太多的時間來嘗試解決某些可能過於簡單的問題。出於某種原因,我無法獲得以下setInterval調用。它確實會調用一次,但不會每1000毫秒調用一次。它會爲某些輸入的是有幫助的,爲什麼這個警告是沒有被調用每1秒(1000毫秒)無法讓setInterval在給定的上下文中工作

<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> 

回答

0

setInterval需要函數對象

this.hungerClock = setInterval(func, 1000); 

如果你想你需要使用一個額外的匿名函數傳遞參數:

this.hungerClock = setInterval(function(){ alert(1) }, 1000); 
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);