2010-04-07 195 views
0

我爲一個會議網站創建了這個代碼,我負責完成這個任務。這是一個簡單的使用window.setInterval進行淡入淡出循環。我已經在Firefox,safari和google Chrome上測試過它。第一個2在一段時間後停止響應,而谷歌瀏覽器給了我一個說明,說腳本使用了太多的內存。我的腳本哪部分使用了太多的內存,我應該如何糾正它?這fadeIn/fadeOut jQuery代碼崩潰我的瀏覽器 - 爲什麼?

由於會議網站目前用於市場營銷,我必須恢復到我的備份副本。因此,我無法提供此問題的網址。我會的,但是,只要提供一個爲我讓我假的網站上

<span id="alertTxt" style="text-align:center; color:#CC0000; display:none">Director of Information Technology, Network Communications, Security, Smart Metering, Operations, C-Level Executives</span> 
<span id="alertTxt2" style="text-align:center; color:#CC000; display:none">This Conference is for You!</span> 

<script type="text/javascript"> 
function animateTxt() { 
    $j("#alertTxt").fadeIn(2000); 
    $j("#alertTxt").delay(6000).fadeOut(1500); 
    animateTxt2(); 
    window.setInterval("animateTxt()",22000); 
} 
function animateTxt2() { 
    $j("#alertTxt2").delay(1500).fadeIn(2000); 
    $j("#alertTxt2").delay(6000).fadeOut(1500); 

} 
animateTxt(); 
</script> 

回答

4

的setInterval被用於設置重複計時器。如果你在animateTxt()的最後使用setInterval,那麼你最終會得到很多計時器。將其更改爲setTimeout或將其移出該功能。

3

你應該重新寫這個的時候完全觸發這樣的:

function animateTxt() { 
$j("#alertTxt").fadeIn(2000).delay(6000).fadeOut(1500, function() { 
    $j("#alertTxt2").delay(1500).fadeIn(2000).delay(6000).fadeOut(1500,function(){ 
    animateTxt(); 
    }); 
}); 
} 
animateTxt(); 

而是排隊,可能會或可能不會按時完成動畫,在不斷增長的隊列中結束了,這觸發動畫完成後循環。您目前所用的方法以線性速率增長,並且動畫開始堆疊並且隊列建立得很快......這確保了一次只進行一個循環。