为什么我的函数会返回相同的结果?
我想将“ping”函数中的所有值输入到数组中,然后在html中输出该数组。 我运行该功能3次,但所有三次结果都相同。你能告诉我为什么吗?
(顺便说一下,域名只是一个例子,不能把原文放在这里)
var str = ' ';
var t=[];
var n= 2;
var arr = ["www.google.com","www.example.com","www.example2.com"];
var results = [];
var finalurl = '';
function fun1(){
for (var i=0; i < arr.length; i++){
str = "http://" + arr[i] + "/images/";
finalurl = str + "image-l.gif" + "?id=" + (new Date()).getTime();
ping(finalurl);
textt += results[i] + " ";
$(‘#ping’).html(textt);
}
}
var ping = function(finalurl) {
var l = 0;
t.push((new Date()).getTime());
if(t.length > n) {
p=t[2]-t[1];
results.push(p);
}
else {
var img = new Image;
$(img).load(function() {
ping();
}).attr('src', finalurl);
}
}
// html的一小部分:
<h2><a href="#" onclick="fun1();">run</a></h2>
<h1 id=“ping”> </h1>
答案 0 :(得分:0)
这会生成三个网址(length
的{{1}}),但只会尝试显示两个网址(arr
的值)。网址每次都不同,但您在n
限制它们,因此不会使用新的。
尝试将ping
设置为更高的数字,您会看到它会在每次点击时加载更多图片 - 因为它目前正在尝试加载一次点击(3),而不是允许加载(2)。
注意:即使这些网址不同,图像也可能相同,如果服务器忽略n
参数,就会发生这种情况......这可能是因为它需要服务器的额外配置来处理请求“.gif”资源(不是已知的servcer端脚本语言) - 默认情况下,服务器只返回资源id
。
顺便说一句:在image-l.gif
那些是错误的引号。此外,$(‘#ping’)
未定义 - 我确实为我的测试定义了textt
。