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