比较JQuery函数中的负数

Comparing negative numbers in JQuery function

本文关键字:JQuery 函数 比较      更新时间:2023-09-26

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

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

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

我得到我在A不确定getLeftPercent()是否返回您期望的值。

您的getLeftPercent()函数似乎过于复杂。我不确定您的"left"是相对于文档还是父元素,我假设这里是文档。

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

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

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