javascript数组中的第二个值始终未识别

时间:2013-03-01 11:17:22

标签: javascript

有这个脚本:

<script type="text/javascript">
var imones = [];
imones.push('example.com');
imones.push('cnn.com');
imones.push('apple.com');


var beforeloadingtime = (new Date()).getTime();
var beforeTime = [];
beforeTime[0] = beforeloadingtime;
$.each(imones, function (index, value) {
    var jsonnuorodos = "http://anyorigin.com/get?url=" + imones[index] + "&callback=?";
    $.getJSON(jsonnuorodos, function (data) {
        var iframe = $("#output")[0];
        var doc = iframe.document;
        if (iframe.contentDocument) {
            doc = iframe.contentDocument;
        } else if (iframe.contentWindow) {
            doc = iframe.contentWindow.document;
        }
        doc.open();
        doc.writeln(data.contents);
        doc.close();
        var loadingtime = (new Date()).getTime();
        beforeTime.push(loadingtime);

        var result;
        result = (beforeTime[index + 1] - beforeTime[index]) / 1000;
        console.log("result - " + result);
    });
});
</script>

在控制台中我得到以下结果:

result - 1.741 
result - NaN 
result - 0.86 

我的第二个结果是NaN,因为beforeTime [index + 1]值总是无法识别。

编辑: 如果我写console.log("index= "+[index]); console.log("index+1= "+[index+1]);我得到了:

index= 0 
index+1= 1 
index= 2
index+1= 3
index= 1
index+1= 2 

应该是:

index= 0 
index+1= 1 
index= 1
index+1= 2
index= 2
index+1= 3

2 个答案:

答案 0 :(得分:1)

可能原因是您使用$.getJson并使用$.each来创建此功能。那是非同步的。 index=3的响应速度比index=2快,所以....

答案 1 :(得分:0)

通过添加一个简单的for循环来修复它:

for (i=0;i<4;i++){
var result;
result = (beforeTime[i+1] - beforeTime[i]) / 1000;
}