【发布时间】:2017-11-20 10:13:49
【问题描述】:
我有一个函数能够通过 foreach(item) 迭代读取“图像链接”数组。在每次迭代中,我都试图:在Image() 对象中加载图像,并在 onload 事件中获取属性(naturalWidth 和naturalHeight)并将其粘贴到 DOM 中作为<DIV> 的背景。
但是 img.onload 是异步的,在 onload 事件粘贴之前,所有迭代都会通过。
如何在每次迭代中创建连续的 img.onload 链和更改 img.src?
function singleGrid() {
galdiv1.className = galClassList;
function imgFill() {
arr.forEach(function(item) {
img = new Image();
img.onload = function() {
var nHeight = this.naturalHeight;
var nWidth = this.naturalWidth;
var res = nWidth / nHeight;
console.log("image source: " + arr[i] + ", naturalWidth: " + nWidth + "px, naturalHeight: " + nHeight + "px");
blockres = width * res;
var div = divCreate(blockres);
galdiv1.append(div);
};
img.src = item;##
Heading##
}, this);
}
imgFill();
}
【问题讨论】:
-
您是否尝试加载所有图像,然后将它们附加到 DOM?
-
@MrSmith Yap。我想预先加载所有图像以获取每个图像 naturalWidth 和 naturalHeight 的 Image() 属性。用于计算每个 DIV 的背景宽度和高度,我将在其中附加此图像。我可以把它现在如何在带有 Inspector 代码的 chrome 中工作的屏幕截图发给你吗?
标签: javascript jquery html css image