2013-04-05 83 views
1

我不是javascript的專家,所以希望有人能幫助我。JavaScript比if語句不能正常工作更大

我有下面的代碼,但由於某種原因它總是認爲聲明是真實的

delvNum=document.getElementById("deliveryNum").value; 
delvQTY=document.getElementById("delvQTY"+id).value; 
orderQTY=document.getElementById("orderQTY"+id).value; 

if (delvQTY>orderQTY) 
{ 
    alert("Can't deliver more than " + orderQTY + ", you are trying to deliver " + delvQTY + ". Please fix!"); 
    document.getElementById("delvQTY"+id).focus(); 
    return; 
} 

錯誤消息確實顯示出每一個種羣的數量,並且正確地被通過。

回答

2

您正在比較字符串而不是數字。

使用parseIntparseFloat

if (parseFloat(delvQTY)>parseFloat(orderQTY)) 

if (parseInt(delvQTY,10)>parseInt(orderQTY,10)) 
1

您正在進行字符串比較,而不是數字比較,例如,"9">"1111"true

你需要分析你的價值觀:

if (parseFloat(delvQTY)>parseFloat(orderQTY)) 

parseFloat

1

你需要確保delvQTYorderQTYNumber你可以做>比較前。

var delvValue = parseInt(delvQTY, 10);轉換爲整數。

還是浮點數:var delvValue = parseFloat(delvQTY);

1

你比較字符串值,而不是數字的。你應該說:

delvNum = parseInt(document.getElementById("deliveryNum").value, 10); 

(假設你是處理整數,否則使用parseFloat)。

請注意10表示您正在處理基準10--如果沒有它,如果有人鍵入前導零,那麼您會得到令人費解的結果。