1

以下是我的代码。现在,当鼠标离开时,我想等待 2000 毫秒以恢复我的幻灯片放映。但是一旦鼠标离开,图像就会改变。有人可以帮忙吗??

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

4 回答 4

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:那里实际上最终成为一个毫无意义的标签

于 2013-03-13T09:25:07.940 回答
1

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

于 2013-03-13T09:25:40.627 回答
1

请去掉括号。示例:setTimeout(resume, 2000);

于 2013-03-13T09:28:17.603 回答
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>

于 2013-03-13T09:30:55.303 回答