[英]JavaScript setTimeOut doesn't seem to work like I expect
這是一個簡單的 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 function 中添加警報(顏色),我可以首先看到 div bgcolor go 黃色。 此外,6000 也被忽略。 為什么?
setTimeout(setColor('yellow'),6000);
您正在調用setColor('yellow')
並將返回值( undefined
)傳遞給setTimeout
。
你需要給它傳遞一個函數。
同樣重要的是要注意setTimeout
將導致函數在一段時間后被調用。 它不會讓 JavaScript 在這段時間內休眠。
setTimeout(setColor.bind(window, 'yellow'),6000);
setTimeout(setColor.bind(window, 'red'),6000);
...將調用setTimeout
在0,然后調用setTimeout
再晚一秒的一小部分,然后調用setColor('yellow')
在6S和setColor('red')
之后第二個的一小部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.