1

2 つの負の数を比較しようとしていますが、比較に失敗します。この特定のケースでgetLeftPercent()は、負の数 (-14) ですが、比較するとアクション B が実行されます。論理的には、(-14) は (-10) より小さいため、アクション A を実行する必要があります。

右側の比較オペランド (-10) を正の数 (たとえば 1) に変更すると、アクション A が実行されます。私が見落としている JavaScript の癖はありますか (私をじっと見つめています)。完全なコードを投稿できますが、それ以上のものはありません。

$(function() {

    // the statement in question
    if (parseInt(getLeftPercent(), 10) < -10) {
        // do action A
        // this is just a debug statement
        $('#posbanner').html('element position is less than negative 10');
    } else {
        // do action B
        // this is just a debug statement
        $('#posbanner').html('element position is greater than  or equal to negative 10');
    }
});

//  element left position on page
function getLeftPercent() {
    var leftStr = $('#sidebar').css('left'),
        pxPos = leftStr.indexOf('px'),
        leftVal = leftStr.substr(0, pxPos),
        leftPercent = (leftVal / $(window).width() * 100).toString(),
        dotPos = leftPercent.indexOf('.'),
        leftPercentStr = dotPos == -1 ? leftPercent  : leftPercent.substr(0, dotPos);
    return leftPercentStr;
};
4

3 に答える 3

2

jsfiddle で次のコードを実行してみました

if (parseInt( -14, 10) < -10)
{
alert("I am in A");
}
else
{
alert("I am in B");
}

I am in AgetLeftPercent()が期待する値を返す かどうかはわかりません。

于 2013-08-20T17:55:10.753 に答える
0

あなたのgetLeftPercent()機能は複雑すぎるようです。あなたの「左」がドキュメントまたは親要素のどちらに関連しているかはわかりません。ここではドキュメントを想定します。

function getLeftPercent() {
    'use strict';
    return ( ($('#sidebar').offset()).left * 100 / $(window).width() );
}
于 2013-08-20T17:56:01.037 に答える