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 });
});

問題は、小さな画像が拡大されることです。問題ありません。もう 1 つの if ステートメントで処理する必要があります。

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 });
    }
});

ここでどこが間違っていますか?

4

2 に答える 2

3

問題は、スクリプト タグがページの下部にあるにもかかわらず、ページの画像が読み込まれる前にスクリプトが実行されることでした。そこで学んだ教訓!.each を .load に変更しましたが、これは私の目的には問題ありません。

$("window").load()より良い解決策は、これをイベントまたはでラップすること$(document).ready()です。

于 2012-10-27T01:20:39.887 に答える
1

問題は、コンポーネントから値を取得していると思っているのに、実際には他の場所nullから値を取得している(または以外の値を取得していない)ことである可能性があります。

迅速で汚いアプローチは次のとおりです。

alert(thatDarnedValue);

または、方法がわかっている場合は、コンソールウィンドウ、開発DIV、またはデバッグに使用するものに書き込んで、実際にそこに何があるかを確認します。

私はしばしば驚かされます-「これはそこにあるはずではない」-経験。

この種の落とし穴は、準備のさまざまな段階でグラフィカルコンポーネントの値をチェックする場合によくあります。ドキュメントがロードされているが、準備ができていないなどの可能性があります。

于 2012-10-27T10:56:40.257 に答える