2013-02-27 196 views
1
function smoothTransition(o,n) 
{ 
    o.style.opacity = 0; 
    o.src = n; 
    var timer = setInterval(function(){ 
     if (o.style.opacity == 1){ 
      clearInterval(timer); 
     } 
     o.style.opacity += 0.01; 
    }, 10); 
} 

這裏o是對象(在這種情況下是img),n是將要替換當前對象的新圖像的名稱。但是當我運行這個代碼時,它只運行一次,並賦予新圖像0.01不透明度,然後停止。什麼可能導致這種情況?JavaScript setInterval只運行一次

+1

你能否補充一點,我們可以看看和jsfiddle.net或類似的服務測試一個更完整的例子嗎? – razzed 2013-02-27 00:41:25

回答

2

style.opacity是一個字符串,而不是數字。當你做o.style.opacity += 0.1結果實際上是'00.1',這是有效的,但在下一次迭代中它變成00.10.1,這不是,所以不透明度重置爲0

這很容易通過將style.opacity轉換爲數字來解決。

http://jsfiddle.net/TZ9Vd/1/

+0

非常感謝你,我正在爲此煩惱。 – user1800978 2013-02-27 00:46:25