-1

文字列でsetintervalを使用すると、正常に機能しますが、onclickによって設定されたprvious id(cityid)に関連するチャットもロードされます。新しいクリックの新しいID(cityid)に関連するチャットと前のIDの間で毎秒シャッフルします。前のIDで実行されている場合はタイマーを停止し、新しいIDに関連するチャットのみをフェッチして、新しいチャットのみを取得します。新しいIDに関連するbが表示されます。

Plzのヘルプ、代替アプローチも評価されます。

PHPonclickはこちら

            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関数に2つのパラメーターを渡す必要があります。

setInterval(chatcom_load(comid, cityid), 1000)
4

2 に答える 2

4
setInterval(chatcom_load(comid, cityid), 

chatcom_loadこれにより、関数がすぐに呼び出され、結果がに渡されsetIntervalます。

setInterval次のような関数をに渡す必要があります。

setInterval(function() { chatcom_load(comid, cityid); },
于 2012-10-15T13:43:40.107 に答える
0

setInterval()関数呼び出しのみを受け取り、コードはメソッドを実行して結果を渡します。メソッドをでラップする必要がありますfunction(){}。また、現在の間隔を参照し、以前の値がロードされ続けないように設定されている場合はキャンセルする必要があります。

var si;
function all(comid,comname,cityid,cname){
    if (si) clearInterval(si);
    si = setInterval(function(){ chatcom_load(comid, cityid); }, 1000);
}
于 2012-10-15T13:45:30.227 に答える