您的代码的问题在于,由于您在那里进行了异步调用,因此执行顺序可能看起来像这样(当然,由于时间间隔和对 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 步中的变量是未定义的,因为您访问的元素还没有任何文本。或者,它有空字符串,拆分是 by:
并且你得到数组[""]
,因此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);
看起来您想监视服务器上的某些内容。这看起来像一个WebSockets用例。根据您使用的服务器框架,您可以使用不同的 Web 套接字包。