Javascript 函数在每次重新加载时的工作方式不同

Javascript 函数在每次重新加载时的工作方式不同,javascript,jquery,css,Javascript,Jquery,Css,我知道这听起来有点奇怪,但我有一个函数可以改变图像的高度和宽度 我在准备好的文档上执行它。但是每次我刷新页面时,对于相同的图像,我会得到不同的结果(每4次或第5次都会得到正确的结果)。这是我的密码: $("img").each(function(){ $(this).width( parseInt($(this).width()) / (parseInt($(this).width())/parseInt($(".container").css("height")))

我知道这听起来有点奇怪,但我有一个函数可以改变图像的高度和宽度 我在准备好的文档上执行它。但是每次我刷新页面时,对于相同的图像,我会得到不同的结果(每4次或第5次都会得到正确的结果)。这是我的密码:

$("img").each(function(){
    $(this).width(
      parseInt($(this).width()) / (parseInt($(this).width())/parseInt($(".container").css("height")))
    );
    $(this).height(parseInt($(".container").css("height")));
});

图像在一个容器中,我希望它们与容器具有相同的高度,宽度随高度的变化相等。容器的高度是动态变化的,每次我改变容器的大小时,我也会改变图像的大小(我这里没有问题)。我不太明白每次我加载我的页面时,这种工作方式会有什么不同

您应该使用
$(window.load()
函数等待加载所有图像,或者使用其他方法控制图像加载。选择您的方式,但问题很简单,您的函数在加载图像之前启动。

您不需要等待图像加载

但您至少需要等待它们开始加载

有什么区别?在我所知道的所有图像格式中,元数据的第一部分是图像的维度。这就是为什么对于较大的图像,您可以看到浏览器在图像开始加载时保留空间,然后在加载时用图像填充空间

所以!记住这一点,让我们让你的页面看起来尽可能清晰,好吗


忘了这些吧,我刚刚意识到,你是在设定容器的高度?那样的话

$("img").each(function(){
    this.style.width = "auto";
    this.style.height = "100%";
});

好了。使用
auto
作为宽度将保持纵横比。

因为图像加载需要时间…javascript代码运行速度比图像预加载速度快。在工作中使用这一点非常有吸引力。非常感谢。@veili_13 Cool:)如果有人对原始计划感兴趣,我的网站会使用代码反复轮询图像,直到它们返回非零的
this.width
。一旦图像不为零,就对其进行处理并停止轮询。这样,一旦图像开始加载,它就已经被处理过,即使有大的图像文件,也能为用户提供无缝的体验。