2013-05-14 2 views
1

У меня есть сценарий JavaScript, который затухает.Google Chrome JavaScript Fade: style.opacity и setTimeout

суть всего этого:

function fade() { 
    if (cat.style.opacity > 0) { 
     // decrease opacity slightly 
     cat.style.opacity -= 0.1; 

     // call fade again in a fraction of a second 
     setTimeout(fade, 60); 
    } else { 
     cat.style.visibility = "hidden"; 
    } 
} 

(полный код здесь http://xahlee.info/js/js_fadeout.html, JavaScript-код здесь: http://xahlee.info/js/js_fadeout.js)

В Google Chrome, он не выгорает полностью. Кажется, что петля застряла, и стиль не достигнет 0.

В StackOverflow, похоже, ошибка Google Chrome из должности год назад, но так и не была подтверждена.

Кажется странным, поскольку это было бы большой ошибкой. Кто-нибудь знает, почему он не работает в Google Chrome?

ответ

4

Это, по-видимому, вопрос точности. Вы можете легко обойти его, используя .toFixed с той точностью, в которой вы нуждаетесь.

cat.style.opacity = (cat.style.opacity - 0.1).toFixed(2); 

http://jsfiddle.net/GgPqc/

+0

Удивительно. Спасибо! Отличный ответ. –