1

我正在尝试比较两个负数,但比较失败。在这种特定情况下,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");
}

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

于 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 回答
-1

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

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

alert(parseInt('abc-14', 10)); // NaN
于 2013-08-20T18:00:29.450 回答