簡體   English   中英

javascript setTimeout()不添加延遲

[英]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並將其返回值傳遞給foosetTimeout(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM