以下是我的代码。现在当鼠标出来时我想等待2000毫秒才能恢复我的幻灯片放映。但是一旦鼠标移出,图像就会改变。 任何人都可以帮忙??
<img src="images/achiever.png" name="slide" alt="badge"
width="130" height="130" onmouseover="pause()"
onmouseout="javascript:setTimeout(resume(), 2000)" />
答案 0 :(得分:8)
您正在调用 resume
并将其返回值传递给setTimeout
,而不是将resume
传递给它。 setTimeout
应如下所示:
setTimeout(resume, 2000)
就像foo(bar())
执行 bar 并将其返回值传递到foo
,setTimeout(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>