2012-10-15 56 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