2013-08-20 107 views
1

我想比較兩個負數,並且比較失敗。在這個特定情況下,getLeftPercent()是一個負數(-14),但比較時,執行動作B.邏輯上,(-14)小於(-10),因此應執行操作A.比較JQuery函數中的負數

如果我將右側比較操作數(-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; 
}; 
+1

getLeftPercent()返回的實際字符串值是什麼? –

+2

添加'console.log(getLeftPercent())'並在控制檯中檢查結果(Chrome/Firefox中的Ctrl + Shift + J) –

+0

獲得FF的firebug並逐步調試,應該能夠輕鬆發現問題 – Huangism

回答

2

我試過的jsfiddle

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

運行下面的代碼,我得到我在一個 不知道,如果是getLeftPercent()返回你所期望的價值。

+0

感謝您的回覆。 $('#posbanner')。html〜語句的原因是顯示getLeftPercent()返回的實際值。它返回一個有效的號碼,但由於某種原因沒有被正確比較 –

0

您的getLeftPercent()功能似乎過於複雜。我不確定你的「左」是相對於文檔還是父元素,我會在這裏假設文檔。

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

是的,這個功能是我從其他地方借用的。它比需要更多一點,但有跡象表明我刪除(功能不僅僅是返回百分比的。 –

-1

最有可能你的子數之前返回一些字符。

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

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

在子使用的字符串是從$('#側邊欄)。CSS(「左」),我不要其他部位「T認爲它會包含其他額外的字符 – Huangism

+0

由函數返回的值是一個數字,它匹配的元素的網頁上的定位。謝謝 –