javascript setTimeout()没有添加延迟

时间:2013-03-13 09:23:26

标签: javascript

以下是我的代码。现在当鼠标出来时我想等待2000毫秒才能恢复我的幻灯片放映。但是一旦鼠标移出,图像就会改变。 任何人都可以帮忙??

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

4 个答案:

答案 0 :(得分:8)

正在调用 resume并将其返回值传递给setTimeout,而不是将resume传递给它。 setTimeout应如下所示:

setTimeout(resume, 2000)

就像foo(bar())执行 bar 并将其返回值传递到foosetTimeout(resume(), 2000) 执行 resume并且将其返回值传递给setTimeout


另外,请注意,您不要将javascript:伪协议与任何onXYZ属性一起使用,仅限于需要URL的位置(例如锚点上的href)。因此,您的onmouseout属性应如下所示:

onmouseout="setTimeout(resume, 2000)"

onXYZ属性中的代码始终是代码,而不是URL。实际上javascript:实际上是无意义的label

答案 1 :(得分:1)

setTimeOut的参数应该是一个函数,将函数作为参数传递的正确方法是使用不带括号的函数名。如果添加括号,则实际执行该函数并将结果传递给setTimeOut。 因此,它应该是setTimeOut(resume,2000)

答案 2 :(得分:1)

请删除括号。示例:setTimeout(resume,2000);

答案 3 :(得分: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>