没有 jQuery
所以,我需要一个函数来循环检查页面上的所有图像。我需要获取它们的尺寸并验证它们。
function checkImageInputs() {
var images = new Array();
var fileInputs = document.getElementsByClassName('file-input');
for (var i = 0; i < fileInputs.length; i++) {
var t = fileInputs[i];
var ourCell = t.parentNode;
if (t.files[0]) {
var file = t.files[0];
fr = new FileReader();
fr.onload = createImage;
fr.readAsDataURL(file);
function createImage() { // Create Image
img = document.createElement('img');
img.src = fr.result;
img.className = 'file-result';
ourCell.appendChild(img);
images[i] = img;
}
}
}
// I need the images array here
alert(images.length);
}
当我将循环添加到我的函数以处理页面上的所有文件输入时,它不会返回给我想要的结果。
alert
返回 0,即使我所有的文件输入都填满了图像。
之后执行他的fr.onload
功能alert
。同理ourCell.appendChild(img)
,图像出现在 之后alert
。
如何让它alert
显示真实数量的图像,等到所有图像都加载完毕?
我在 DOM 加载时调用这个函数,如下所示:
var fileInputs = document.getElementsByClassName('file-input');
for (var i = 0; i < fileInputs.length; i++) {
fileInputs[i].onchange = new Function('checkImageInputs()');
}