每次都从功能中获得相同的结果

时间:2014-02-14 10:21:46

标签: javascript html

为什么我的函数会返回相同的结果?

我想将“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>

1 个答案:

答案 0 :(得分:0)

这会生成三个网址(length的{​​{1}}),但只会尝试显示两个网址(arr的值)。网址每次都不同,但您在n限制它们,因此不会使用新的。

尝试将ping设置为更高的数字,您会看到它会在每次点击时加载更多图片 - 因为它目前正在尝试加载一次点击(3),而不是允许加载(2)。

注意:即使这些网址不同,图像也可能相同,如果服务器忽略n参数,就会发生这种情况......这可能是因为它需要服务器的额外配置来处理请求“.gif”资源(不是已知的servcer端脚本语言) - 默认情况下,服务器只返回资源id

顺便说一句:在image-l.gif那些是错误的引号。此外,$(‘#ping’)未定义 - 我确实为我的测试定义了textt