2012-10-15 278 views
-1

如果我使用setinterval字符串,那麼它工作正常,但它也加載與由onclick設置的prvious id(cityid)相關的聊天。並在每秒之後在新點擊和以前的id之間的與新id(cityid)相關的聊天之間進行secreen洗牌。如果想要使用先前id運行的計時器,並且僅提取與新id相關的聊天,則要停止計時器,以便僅新聊天將顯示與新ID相關的信息。Setinterval不能正常工作

Plz的幫助,任何替代方法也將是appretiated。

腓的onclick是這裏

  echo "<A href='#' onclick=allccityid('$comid','$comname',$cityid,'$cities');>$cities</A><br> "; 

jQuery代碼是在這裏。

function all(comid,comname,cityid,cname){ 
//clearInterval(si); 

setInterval('chatcom_load('+ comid +','+ cityid +');', 1000) 

} 


function chatcom_load(idi, cityida) { 

$.post('sendchat2.php', {option:'chatcom_load', tocom:idi, tocity:cityida}, function(data) { 
    $('#chatcom #commid #commidwin').html(data); 

}); 
} 

不過,我也通過這種方式嘗試setInterval的,但它沒有工作(刷新)。我必須要通過兩個參數傳遞給chatcom_load功能。

setInterval(chatcom_load(comid, cityid), 1000) 

回答

4
setInterval(chatcom_load(comid, cityid), 

這將調用chatcom_load功能立即,然後將結果傳遞給setInterval

您需要的功能傳遞給setInterval,像這樣:

setInterval(function() { chatcom_load(comid, cityid); }, 
+0

還需要添加一個引用到'的setInterval()'使之能取消並重新啓動新值。 – doublesharp

+0

@doublesharp,感謝您的快速響應,我如何取消它,並重新啓動新values.this是我的主要問題? –

+0

@SidraNaeem查看我的回答 - 你需要在全局變量中引用'setInterval'的結果以便能夠清除它 – doublesharp

0

setInterval()只需要一個函數調用,執行代碼的方法,並把結果。你需要將你的方法包裝在function(){}中。您還需要參考當前時間間隔,並取消它,如果它已經被設置爲防止繼續加載前值:

var si; 
function all(comid,comname,cityid,cname){ 
    if (si) clearInterval(si); 
    si = setInterval(function(){ chatcom_load(comid, cityid); }, 1000); 
} 
+0

,謝謝,它工作正常,但現在速度取回聊天非常緩慢。時間來更新聊天窗口。整個聊天系統現在看起來很重。 –

+0

這可能需要一個新的問題 - 聊天系統運行緩慢的原因很多。 – doublesharp