我知道这个标题对于一个关于关联数组及其长度问题的常见问题来说听起来很熟悉。但是,我还没有在 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 上的脚本。 (控制台输出)
最佳答案
当您说 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/