这是一个简单的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也被忽略。为什么?
答案 0 :(得分:2)
Honestly I'm hoping someone here could explain how I can hide all of the meshes that are not visible because they are completely behind other objects.
您正在调用 setTimeout(setColor('yellow'),6000);
并将返回值(setColor('yellow')
)传递给undefined
。
你需要传递一个函数。
同样重要的是要注意setTimeout
将导致函数在一段时间后被调用。它在这段时间内不会让JavaScript睡眠。
setTimeout
...会在{0}处拨打setTimeout(setColor.bind(window, 'yellow'),6000);
setTimeout(setColor.bind(window, 'red'),6000);
,然后在几分之一秒后再次拨打setTimeout
,然后在6秒后拨打setTimeout
,在短时间后拨打setColor('yellow')
这一点。