2011-11-08 20 views
0

我在我的腳本中使用jquery,並在此我調用該函數中使用setTimeout()函數。我也使用setTimeout()來調用該函數在document.ready(function(){})中;我得到了一個jQuery腳本不工作的錯誤,當我使用超時功能

當我運行這個腳本時,彈出錯誤信息爲「這個頁面上的腳本可能很忙,或者它可能已經停止響應了,你現在可以停止腳本,或者你可以繼續看腳本是否會完成」

我使用的功能

$(document).ready(function(){ 
    setTimeout('reloadlink()', 1000); 
    setTimeout('randimage()', 2000); 

}); 
function reloadlink(){ 
    $.ajax({ 
        type: "POST", 
        url: "<?php echo base_url();?>index.php/affliate/randomafflinks", 
        success: function(msg){ 
         $('#rlinks').html(msg); 
         setTimeout('reloadlink()', 2000); 
        } 
     }); 



} 
function randimage(){ 
    $.ajax({ 
        type: "POST", 
        url: "<?php echo base_url();?>index.php/affliate/randimage", 
        success: function(msg){ 
         $('#affimg').html(msg); 
         setTimeout('randimage()', 2000); 
        } 
     }); 



} 

回答

0

會更好,如果你將通過指針的函數,而不是在setTimeout的字符串。試着打電話給你的功能,這樣

setTimeout(reloadlink, 1000); 
setTimeout(randimage, 2000); 

setTimeout(function(){ reloadlink(); }, 1000); 
setTimeout(function(){ randimage(); }, 2000); 

第一種變體更好。無論如何,當你用一段代碼調用setTimeout時,解釋器會創建匿名函數。
此外,瀏覽器還存儲指向創建的超時的指針,並將其更好地存儲在某處並使用clearTimeout清除。沒有清除你會浪費瀏覽器的資源。

相關問題