Javascript 比较JQuery函数中的负数

Javascript 比较JQuery函数中的负数,javascript,Javascript,我试图比较两个负数,但比较失败。在这种特定的情况下,getLeftPercent()是一个负数(-14),但在比较时,会执行操作B。逻辑上,(-14)小于(-10),因此应执行动作A 如果将右侧比较操作数(-10)更改为正数(例如1),则执行操作a。我是否忽略了JavaScript的一些怪癖(它正盯着我看)?我可以发布完整的代码,但实际上没有更多 $(function() { // the statement in question if (parseInt(getLeftPe

我试图比较两个负数,但比较失败。在这种特定的情况下,
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;
};
$(函数(){
//有关声明
if(parseInt(getLeftPercent(),10)<-10){
//采取行动
//这只是一个调试语句
$('#posbanner').html('元素位置小于负10');
}否则{
//做动作B
//这只是一个调试语句
$('#posbanner').html('元素位置大于或等于负10');
}
});
//元素在页面上的左位置
函数getLeftPercent(){
var leftStr=$('#边栏').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);
返回leftPercentStr;
};

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

if (parseInt( -14, 10) < -10)
{
alert("I am in A");
}
else
{
alert("I am in B");
}
if(parseInt(-14,10)<-10)
{
警惕(“我处于危险状态”);
}
其他的
{
警惕(“我在B区”);
}
我明白了,我陷入了困境
不确定,如果
getLeftPercent()
返回您期望的值。

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

if (parseInt( -14, 10) < -10)
{
alert("I am in A");
}
else
{
alert("I am in B");
}
if(parseInt(-14,10)<-10)
{
警惕(“我处于危险状态”);
}
其他的
{
警惕(“我在B区”);
}
我明白了,我陷入了困境 不确定,如果
getLeftPercent()
返回您期望的值。

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

function getLeftPercent() {
    'use strict';
    return ( ($('#sidebar').offset()).left * 100 / $(window).width() );
}
您的
getLeftPercent()
函数似乎过于复杂。我不确定您的“left”是相对于文档还是父元素,我将在这里假设文档

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

子字符串很可能返回数字前的一些字符

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

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

子字符串很可能返回数字前的一些字符

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

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

通过
getLeftPercent()
返回的实际字符串值是多少?添加
console.log(getLeftPercent())
并在控制台中检查结果(Chrome/Firefox中的Ctrl+Shift+J)获取firebug for FF并逐步调试,应该能够轻松发现问题getLeftPercent()返回的实际值是一个数字,即-14。我尝试过调试,但没有回答。
getLeftPercent()
返回的实际字符串值是多少?添加
console.log(getLeftPercent())
并在控制台中检查结果(Chrome/Firefox中的Ctrl+Shift+J)获取firebug for FF并逐步调试,应该能够轻松发现问题getLeftPercent()返回的实际值是一个数字,即-14。我尝试过调试,但没有回答。子字符串中使用的字符串来自$(“#侧边栏”).css('left'),我认为它不会包含其他额外字符。函数返回的值是一个数字,它与网页上元素的位置匹配。感谢子字符串中使用的字符串来自$(“#sidebar”).css('left'),我认为它不会包含其他额外字符。函数返回的值是一个数字,它与元素在网页上的位置匹配。谢谢,这个函数是我从别处借来的。它比需要的稍多,但我删除了其他部分(功能不仅仅是返回百分比。是的,该功能是我从其他地方借用的。它比需要的稍多,但我删除了其他部分(功能不仅仅是返回百分比。感谢您的回复。$('#posbanner').html~语句的原因是显示getLeftPercent()返回的实际值。它返回的是一个有效的数字,但由于某些原因,没有对您的回复进行适当的比较。$('#posbanner')的原因是:.html~语句用于显示getLeftPercent()返回的实际值。它返回的是一个有效数字,但由于某些原因,无法正确比较