javascript - 正确使用推送的数组长度问题

标签 javascript arrays

我知道这个标题对于一个关于关联数组及其长度问题的常见问题来说听起来很熟悉。但是,我还没有在 Stack Overflow 上找到解决我的问题的方法。

问题是,.length 总是输出 0 而不是想要的数量,在这个测试用例中是 12。当我通过 console.log 输出它时我得到 12 个条目,我可以看到具有正确值的长度属性。我附上了我的 Firebug 输出:

images: Array[12] 
    0: "img1.jpg"
    1: "img2.jpg"
    2: "img3.jpg"
    3: "img4.jpg"
    4: "img5.jpg"
    5: "img6.jpg"
    6: "img7.jpg"
    7: "img8.jpg"
    8: "img9.jpg"
    9: "img10.jpg"
    10: "img11.jpg"
    11: "img12.jpg"
    length: 12
    __proto__: Array[0]

以下代码片段填充数组:

this.images.push(el.toDataURL());

当我现在调用 console.log(this,this.images,(this.images).length); 它总是 0 而不是 12。

如有任何帮助,我们将不胜感激。

fiddle 上的脚本。 (控制台输出)

http://jsfiddle.net/EL2xR/

最佳答案

当您说 this.img.onload 时,您将其设为异步,您的 init 会运行,但会在方法 getImages 之后立即运行,该方法会及时发现 aImages 为空。 在运行 getImages 以获得正确结果之前,您应该考虑检查是否所有图像都已加载。

这是一个有效的修改示例。如果需要,您可以对其进行更多调整! http://jsfiddle.net/EL2xR/1/

 interval = setTimeout(function() {
                _this.getImages(from, to);
            }, 1000);

检查 this.loaded 在代码中出现的位置,我曾经知道一切都已加载的那个标志!然后使用 setTimeout 运行相同的方法直到加载为真!

关于javascript - 正确使用推送的数组长度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16297163/

相关文章:

javascript - Node.js 中的 "done"回调函数是什么?

javascript - Google Maps API v3 选择信息窗口作为 jquery DOM 对象

javascript - 卡在奇怪的 jQuery 错误上

重新实现 Array.prototype.slice 的 JavaScript 难题未按预期工作

javascript - localStorage 是在混合移动应用程序中保存授权 token 的首选位置吗?

javascript - jQuery scrollTop 不滚动到最后一个 child

python - 如何为 Numpy 数组创建切片对象?

javascript - 不需要参数的回调 - 为什么?

r - 取n维数组并在r中绑定(bind)n-1维数组

C++传递值