我无法获得某些图像的widthheight,但是可以通过Image.widthImage.height获得其他图像。为什么有些可以,有些不能?

var i = 0;
var len = imgitem.length;
for( i = 0; i < len ; i++){
    imgSrc = imgitem[i].url;

    imgObj = new Image();
    imgObj.src = imgSrc;
    imgObj.onload = function(){
        console.log(imgObj.width);
        imgObjW = imgObj.width;
        imgObjH = imgObj.height;
    };

    /*限制最大height*/
    if(imgObjH / imgObjW >= 1.5){
    ......


一些HTML元素

<div class="sfc-pic-play-item" style="width: 100%; overflow: hidden;"><div class="sfc-pic-play-item-wrap"><div class="c-img c-img-s" style="background:none"><img src="http://a.jpg" class="sfc-pic-play-center"></div></div></div>

最佳答案

如评论中所述,您的条件必须在onload-handler内,否则可能/将在加载映像之前执行。

正如Jonas w所指出的那样,imgObj当时没有引用正确的对象也将存在问题。

imgitem.forEach(function(item){
    var img = new Image();
    img.src = item.url;
    img.onload = function(){
        var w = img.width,
            h = img.height;

        console.log(item, img, w, h);

        if(h/w >= 1.5){
                //...
        }
    }
});


如果仍然发生错误,我们需要查看您如何将其适应代码

09-19 03:03