比较JQuery函数中的负数

时间:2013-08-20 17:49:29

标签: javascript

我试图比较两个负数并且比较失败。在这种特定情况下,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;
};

3 个答案:

答案 0 :(得分:2)

我尝试在jsfiddle上运行以下代码

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

我在A 不确定,如果getLeftPercent()返回您期望的值。

答案 1 :(得分:0)

您的getLeftPercent()功能似乎过于复杂。我不确定你的“左”是否与文档或父元素相关,我将在这里假设文档。

function getLeftPercent() {
    'use strict';
    return ( ($('#sidebar').offset()).left * 100 / $(window).width() );
}

答案 2 :(得分:-1)

您的子字符串很可能会在数字前返回一些字符。

alert(parseInt('-14abc', 10)); // -14

alert(parseInt('abc-14', 10)); // NaN