使用JavaScript的实际图像宽度

时间:2020-03-05 18:47:12  来源:igfitidea点击:

我有下一个功能:

function setImagesWidth(id,width) {
    var images = document.getElementById(id).getElementsByTagName("img");
    for(var i = 0; i < images.length;i++) {
        // If the real width is bigger than width parameter
            images[i].style.width=width;    
        //}         
    }       
}

我仅在图像实际宽度大于属性值时才将所有img标签的css width属性设置为特定值。如果可能的话,我想要一个不使用任何特定框架的解决方案。

images [i] .offsetWidth`对于109px宽度的图像返回111. 这是因为每个边框1px?

解决方案

回答

希望这里有足够的示例代码可以为我们提供所需的内容:

var myImage = document.getElementById("myImagesId");
var imageWidth = myImage.offsetWidth;
var imageHeight = myImage.offsetHeight;

这应该为我们提供导出所需解决方案所需的数量。我认为我们可以自己编写其余代码。 :)

编辑:在这里,我无奈自己就是你所追求的吗?

function setImagesWidth(id,width) {
   var images = document.getElementById(id).getElementsByTagName("img");
   for(var i = 0; i < images.length;i++) {
      if(images[i].offsetWidth > width) {
         images[i].style.width= (width + "px");
      }
   }           
}

回答

小心点,看来我们可能更想要clientWidth

http://developer.mozilla.org/en/Determining_the_dimensions_of_elements

回答

编辑:我可以以某种方式接受这个答案作为最后一个吗?

由于offsetWidth不返回任何单位,因此必须将css属性的.px结尾连接起来。

// width in pixels
function setImagesWidth(id,width) {
    var images = document.getElementById(id).getElementsByTagName("img");
    for(var i = 0; i < images.length;i++) {
        if(images[i].offsetWidth > width) {
            images[i].style.width= (width+".px");   
        }           
    }       
}

回答

@Sergio del Amo:确实,如果我们查看我的链接,将会看到我们想要的是" clientWidth"。

@Sergio del Amo:很遗憾,我们不能接受自己的回答。但是我们在" px"后缀中确实有多余的句号,因此让我们开始吧,包括clientWidth的更改:

// width in pixels
function setImagesWidth(id, width)
{
    var images = document.getElementById(id).getElementsByTagName("img");
    var newWidth = width + "px";
    for (var i = 0; i < images.length; ++i)
    {
        if (images[i].clientWidth > width)
        {
            images[i].style.width = newWidth;
        }                       
    }
}