有人可以告诉我为什么这段代码不会在两种颜色之间闪现我网页的背景颜色。
<script type="text/javascript">
function blinkit() {
intrvl = 0;
for (nTimes = 0; nTimes < 3; nTimes++) {
intrvl += 1000;
setTimeout("document.bgColor='#0000FF';", intrvl);
intrvl += 1000;
setTimeout("document.bgColor='#FFFFFF';", intrvl);
}
}
</script>
答案 0 :(得分:0)
试试这个:
function blinkit() {
intrvl = 0;
window.setInterval(function(){
intrvl += 1000;
setTimeout("document.bgColor='#0000FF';", intrvl);
intrvl += 1000;
setTimeout("document.bgColor='#FFFFFF';", intrvl);
}, intrvl);
}
答案 1 :(得分:0)
永远不要将字符串传递给setTimeout
,因为它与eval
一样糟糕。
相反,尝试这样的事情:
function blinkit(times, thenwhat) {
var toggle = times*2, timer = setInterval(function() {
document.body.style.backgroundColor = toggle%2 ? "#0000FF" : "#FFFFFF";
toggle--;
if( !toggle) {
clearInterval(timer);
thenwhat && thenwhat();
}
},1000);
return timer;
}
var flashy = blinkit(3);
// The background will flash three times.
// You can also cancel it with `clearInterval(flashy);`
使用上面的代码,您还可以告诉它在完成后执行某些操作:
var flashy = blinkit(3,function() {alert("Hello!");});