コードの問題は、非同期呼び出しがあるため、実行の順序が次のようになる可能性があることです (もちろん、間隔と getJSON への複数の呼び出しのために異なる場合があります)。
// 1. the call to setInterval is initiated (the function in it will not be called until the sequential instructions after setInterval are finished)
var yenile = setInterval(function() {...}, 100);
// 2
var anlikwar = $(".wfloodnum").text().split(":")[1];
// 3
var anlikflood = $(".nfloodnum").text().split(":")[1];
// 4
alert(anlikflood);
// 5. NOW COMES THE function given to setInterval
$.getJSON("ayarlar.asp",function(veri) { ... });
// 6. now would come any other instructions in the function given to setInterval after the getJSON
// 7.
$(".wfloodnum").html("Şu anki değer:" + veri.floodwarno);
// 8
$(".nfloodnum").html("Şu anki değer:" + veri.floodnum);
上記のシーケンスでは、アクセスする要素にまだテキストがないため、ステップ 2 と 3 で変数が未定義であることがわかります。または、空の文字列があり、分割が行われ:
、配列を取得する[""]
ため、この配列のインデックス1
は未定義です。
コードの構造を再考する必要があります。JSON 要求が完了した後、少なくとも変数anlikwar
と変数をanlikwar
割り当てる必要があります。
少なくとも次のようなことができます:
var anlikwar;
var anlikflood;
var yenile = setInterval(function() {
$.getJSON("ayarlar.asp",function(veri) {
$(".wfloodnum").html("Şu anki değer:" + veri.floodwarno);
$(".nfloodnum").html("Şu anki değer:" + veri.floodnum);
anlikwar = $(".wfloodnum").text().split(":")[1];
// or simply: anlikwar = veri.floodwarno
anlikflood = $(".nfloodnum").text().split(":")[1];
// or simply: anlikflood = veri.floodnum
});
},100);
サーバー上の何かを監視したいようです。これはWebSocketの使用例のようです。使用しているサーバー フレームワークに応じて、使用できるさまざまな Web ソケット パッケージがあります。