2013-03-13 95 views
1

以下是我的代碼。現在,當鼠標不在時,我想等待2000毫秒以恢復我的幻燈片。但只要鼠標不在,圖像就會改變。 任何人都可以幫忙嗎?javascript setTimeout()不加延遲

<img src="images/achiever.png" name="slide" alt="badge" 
width="130" height="130" onmouseover="pause()" 
onmouseout="javascript:setTimeout(resume(), 2000)" /> 
+0

也許張貼暫停()和resume()函數在這裏呢? – 2013-03-13 09:25:15

回答

8

調用resume並通過其返回值到setTimeout,而不是傳遞resume進去。該setTimeout應該是這樣的:

setTimeout(resume, 2000) 

就像foo(bar())執行酒吧並將其返回值到foosetTimeout(resume(), 2000)執行resume並將其返回值到setTimeout


另外,請注意,這裏的URL預期(如href錨點),不與任何onXYZ屬性使用javascript:僞協議,只有在地方。所以,你onmouseout屬性應該是這樣的:

onmouseout="setTimeout(resume, 2000)" 

中的代碼onXYZ屬性始終是代碼,而不是URL。那裏實際上最後是一個毫無意義的label

1

setTimeOut的參數應該是一個函數,並且將函數作爲參數傳遞的正確方法是使用沒有圓括號的函數名稱。如果添加括號,則實際上正在執行該函數並將結果傳遞給setTimeOut。 因此,它應該是setTimeOut(resume,2000)

1

請刪除括號。例如:setTimeout(resume,2000);

1

resume()的圓括號導致函數被立即評估。有效地移除這些函數會使函數調用各種「指針」。

<html> 
<head> 
<script type="text/javascript"> 
function pause() { 
    //pause here 
} 

function resume() { 
    alert('resumed'); 
} 
</script> 
</head> 
<body> 
<img src="images/achiever.png" name="slide" alt="badge" width="130" height="130"  onmouseover="pause()" onmouseout="javascript:setTimeout(resume, 2000)" /> 
</body>