2011-12-24 84 views

回答

2

你有兩個問題:

  • 的時間間隔產生多次,並且清除無處
  • 您使用< 1.1來確定元素是否應該成爲可見或不可見,而fade計數從1.1開始。顯然,1.1永遠不會低於1.1。

Updated code,覺得免費的,如果您無法實現它問的幫助:

var interval; // Declare a variable to hold the timer OUTSIDE the function, 
       // so that all event listeners can work with ONE interval 
function fade(elem, speed, mode) { 
    var count = 0; 
    var fade = 1.0; 
    clearInterval(interval); // Clear interval, to prevent having multiple 
          // running intervals 
    if (mode === true && count == 0) { 
     count = 1; 
     interval = setInterval(function() { 
      fade = fade - .1; 
      if(fade > -.1) document.getElementById(elem).style.opacity = fade; 
     }, speed) 
    } else { 
     count = 0; 
     interval = setInterval(function() { 
      fade = fade + .1; 
      // Updated code below: Replaced < with <= 
      if(fade <= 1.1) document.getElementById(elem).style.opacity = fade; 
     }, speed) 
    } 
} 

其他提示:在一個變量

  • 商店document.getElementById(elem),間隔功能外(但在function fade之內,由於性能的原因,varibale查找比函數調用的價格便宜
+0

感謝羅布,並感謝您的額外信息 – 2011-12-24 22:56:51

+0

嗯。我的編輯消失了。無論如何,您還應該清除'if(fade ...)'塊中的間隔,以防止推子在不必要時繼續播放。 – 2011-12-24 23:06:50

+0

您是否有Skype或電子郵件 – 2011-12-24 23:23:38

0

首先,您永遠不會停止您的間隔計時器。一旦開始,它就會永遠。您需要保存設置間隔的返回值,並在完成淡入淡出後停止使用clearInterval的計時器。