2013-02-28 2 views
0

Может кто-нибудь сказать мне, почему этот код не flash цвет фона моей веб-страницы между двумя цветами.Веб-страница цвет фона flash

<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> 
+1

Это работает для меня в Firefox. Может быть, потому, что вы не вызываете функцию 'blinkit()'? – showdev

+1

где вы называете 'blinkit'? Все, что вы показали, это функция, которая определяется, а не называется. – BLSully

+0

вызов blinkit() в теле – user182

ответ

0

Попробуйте это:

function blinkit() { 
    intrvl = 0; 
    window.setInterval(function(){ 
     intrvl += 1000; 
     setTimeout("document.bgColor='#0000FF';", intrvl); 
     intrvl += 1000; 
     setTimeout("document.bgColor='#FFFFFF';", intrvl); 
    }, intrvl); 
} 
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!");}); 
Смежные вопросы