JavaScript setTimeOut似乎不像我期望的那样工作

时间:2015-09-24 20:25:56

标签: javascript

这是一个简单的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也被忽略。为什么?

1 个答案:

答案 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')这一点。