2

我想每 3 秒检查一次某个网站是否在线。

如果连接存在且网站在线,我想每 3 秒显示一次“已连接”警报,但如果没有连接或网站不在线,我想每 3 秒显示一次“未连接”警报。

我试过这个:

var myURL = "http://www.example.com/";

function testConnection(url) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onload = function() { alert("Connected!");}   
    xmlhttp.onerror = function() { alert("Not Connected"); }
    xmlhttp.open("GET",url,true);
    xmlhttp.send();
}

var tickingClock = setInterval(testConnection(myURL), 3000);

但是,这会导致警报仅出现一次。我应该在这个片段中改变什么 tp 让它做我想做的事?

4

1 回答 1

4

您正在调用该函数,而不是在setInterval语句中引用该函数。正确的方法是:

var tickingClock = setInterval(function() { testConnection(myURL); }, 3000);

setInterval接受一个函数(或一个字符串,但尽量避免使用字符串)。您的代码触发该testConnection方法,然后将返回值作为参数提供给setInterval. 但是那个返回值是未定义的,所以setInterval没有任何关系。

于 2013-06-27T16:45:27.797 回答