[英]javascript setTimeout() not adding delay
以下是我的代碼。 現在,當鼠標移出時,我要等待2000毫秒來恢復幻燈片顯示。 但是,一旦鼠標移出,圖像就會更改。 誰能幫忙?
<img src="images/achiever.png" name="slide" alt="badge"
width="130" height="130" onmouseover="pause()"
onmouseout="javascript:setTimeout(resume(), 2000)" />
您正在調用 resume
並將其返回值傳遞給setTimeout
,而不是將resume
傳遞給它。 setTimeout
應該如下所示:
setTimeout(resume, 2000)
就像foo(bar())
執行bar並將其返回值傳遞給foo
, setTimeout(resume(), 2000)
執行 resume
並將其返回值傳遞給setTimeout
。
另外,請注意,不要僅在需要URL的位置(例如錨點上的href
)使用帶有任何onXYZ
屬性的javascript:
偽協議。 因此,您的onmouseout
屬性應如下所示:
onmouseout="setTimeout(resume, 2000)"
onXYZ
屬性中的代碼始終是代碼,而不是URL。 javascript:
實際上實際上是沒有意義的標簽 。
setTimeOut的參數應該是一個函數,將函數作為參數傳遞的正確方法是使用不帶括號的函數名。 如果添加括號,則實際上是在執行該函數並將結果傳遞給setTimeOut。 因此,應將其設置為setTimeOut(resume,2000)
請刪除括號。 示例:setTimeout(resume,2000);
圍繞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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.