2012-10-27 52 views
2

我正在研究一些jQuery来调整页面上的图像大小。此块工作正常:为什么这总是评估错误?

var size = 350; 
$("img").each(function() { 
    if ($(this).height() > $(this).width()) { 
     var h = size; 
     var w = Math.ceil(($(this).width()/$(this).height()) * size); 
    } 
    else { 
     var w = size; 
     var h = Math.ceil(($(this).height()/$(this).width()) * size); 
    } 
    $(this).css({ "height": h, "width": w }); 
}); 

问题是小图像被放大。没问题,如果陈述应该照顾的话,还有一个问题!

var size = 350; 
$("img").each(function() { 
    if ($(this).height() > size || $(this).width() > size) { //Always false 
     if ($(this).height() > $(this).width()) { 
      var h = size; 
      var w = Math.ceil(($(this).width()/$(this).height()) * size); 
     } 
     else { 
      var w = size; 
      var h = Math.ceil(($(this).height()/$(this).width()) * size); 
     } 
     $(this).css({ "height": h, "width": w }); 
    } 
}); 

我在哪里错了?

+0

图像的大小(高度/宽度)是多少? – 0x499602D2

+1

您是否尝试“提醒()”这些值?也许他们是'空'? –

+0

图像有各种尺寸。该源代码是chat.stackoverflow.com中的已知邮件的抓取。所以无论人发布什么。 – Billdr

回答

1

你的问题可能是你认为你从一个组件获取值,而你实际上得到的值(或没有得到比其他null任何值)从其他地方。

一个快速和肮脏的方法是:

alert(thatDarnedValue); 

,或者,如果你知道如何,它写出到控制台窗口,发展DIV或任何你使用调试和实际看到里面有什么了。

我经常感到惊讶 - “这个不是应该是有”的经验。

当我们在不同准备阶段检查图形组件的值时,往往会出现这种情况。文档可能已加载但未准备就绪等。

+0

@Billdr为什么要投票?!我以为你是**帮助我的建议......我错过了什么? –

+0

那不是我的。我会让你回到0。 – Billdr

3

问题是我的脚本在我的页面上的图像加载之前发射,尽管脚本标记位于页面的底部。在那里学到的经验我将.each改为.load,这对我的目的来说很好。

更好的解决方案可能是将其包含在$("window").load()事件或$(document).ready()事件中。