为什么这总是评估错误?

时间:2012-10-27 00:43:38

标签: javascript jquery boolean

我正在研究一些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 });
    }
});

我在哪里错了?

2 个答案:

答案 0 :(得分:3)

问题是我的脚本在加载页面上的图像之前触发,即使脚本标记位于页面底部。那里的经验教训!我将.each改为.load,这对我的目的来说很好。

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

答案 1 :(得分:1)

您的问题可能是认为您从某个组件获取值,而您实际上从<获取值(或者没有获得null以外的任何值)<强>其他地方。

快速而肮脏的方法是:

alert(thatDarnedValue);

或者,如果您知道如何,请将其写入控制台窗口,开发DIV或您用于调试的任何内容,实际上看到那里有什么。

我经常感到惊讶 - “这个 应该在那里” - 体验。

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