这是一个简单的 JavaScript 文件,我在 Chrome (localhost...) 下运行。所发生的情况是,DIV 背景颜色没有设置为绿色,然后设置为红色,而是直接设置为红色。第一个 setTimeout 似乎被忽略了。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Set TimeOuts</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js">
</script>
<script language="javascript">
function setBGColor()
{
var div1 = document.getElementById("div1");
setTimeout(setColor('yellow'),6000);
setTimeout(setColor('red'),6000);
}
function setColor(color)
{
div1.style.backgroundColor=color;
}
</script>
</head>
<body>
<div id="div1" onclick="setBGColor()";>THIS IS THE COLOR TEST</div>
</body>
</html>
但是,如果我在 setColor 函数中放置一个警报(颜色),我可以看到 div bgcolor 首先变成黄色。此外,6000 也被忽略。为什么?
setTimeout(setColor('yellow'),6000);
You are calling setColor('yellow')
并通过返回值(这是undefined
) to setTimeout
.
您需要向它传递一个函数。
还需要注意的是setTimeout
将导致函数在一段时间后被调用。它不会让 JavaScript 在此期间休眠。
setTimeout(setColor.bind(window, 'yellow'),6000);
setTimeout(setColor.bind(window, 'red'),6000);
… 将会通知setTimeout
在 0 秒,然后调用setTimeout
几分之一秒后再次调用setColor('yellow')
在 6 秒和setColor('red')
之后不到一秒。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)