0

有人可以告诉我为什么这段代码不会在两种颜色之间闪烁我网页的背景颜色。

<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>
4

2 回答 2

0

尝试这个:

function blinkit() {
    intrvl = 0;
    window.setInterval(function(){
        intrvl += 1000;
        setTimeout("document.bgColor='#0000FF';", intrvl);
        intrvl += 1000;
        setTimeout("document.bgColor='#FFFFFF';", intrvl);
    }, intrvl);
}
于 2013-02-28T20:23:38.017 回答
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!");});
于 2013-02-28T20:31:56.320 回答