ここでいくつかの間隔に問題があります。
基本的な概念は、バックエンドスクリプトから情報が供給される、行ごとに1つのプログレスバー機能があることです。このスクリプトを、ajax呼び出しの間隔内で5秒ごとにpingします。
これは機能しますが、倍数に問題があります(つまり、2番目のプログレスバーが同じ関数を呼び出す)、またはアイテムが「閉じている」(divスライド)と停止する必要があります。これは非常に複雑なコードなので、必要な部分を引き出すために最善を尽くしますが、現状では実行されない可能性があることに注意してください。
完全なウォークしかし-関数名は無実を保護するために変更されました:)
onlcick、divが開き、この開始関数が呼び出されます。
function start(ID){
var request = $.ajax({
url: "script?DO=Start&ID="+ID
, type: "GET"
, cache: false
, dataType: "text"
});
request.done(function(msg) {
startLoop(ID);
});
request.fail(function(jqXHR, textStatus) {
//alert("Request failed: " + textStatus );
});
}
ご覧のとおり、これによりstartLoop fncが呼び出され、情報の更新情報スクリプト(getInfo())にpingが送信され続けます。
function startLoop(ID){
var i = setInterval(function(){
var xstatus = getInfo(ID);
//other stufff that works
if(xstatus=="done"){
clearInterval(i);
}
}, 5000);
}
これは、それ自体で正常に機能します。
2番目のクリックイベントが2番目のウィンドウを開く場合、それは単に新しいIDを持ち、同じ関数を呼び出します。
したがって、私には1つのi間隔があり、1つを破壊するとすべてが停止するようです。iをi.IDのようなオブジェクトに変換する必要がありますか?
また、停止するとonclick = stop()が呼び出され、ループの外側からは停止できないようです。
これを機能させるためにどのように再配置しますか?
1つまたは複数の同時アイテムの開始、停止、および自動更新をサポートする必要があります。