2013-05-14 33 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

在谷歌瀏覽器,它不會完全消失。似乎環路卡住,style.opacity從未達到0.

在StackOverflow上,它似乎是一年前發佈的Chrome瀏覽器的一個bug,但從未真正確認。

似乎很奇怪,因爲這將是一個主要的錯誤。任何人都知道爲什麼它不適用於Google Chrome?

回答

4

這似乎是一個精確問題。您可以通過使用.toFixed來輕鬆解決這個問題。

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

http://jsfiddle.net/GgPqc/

+0

驚人。謝謝!優秀的答案。 – 2013-05-14 18:44:02