2014-02-17 72 views
-1

stockQty是200和$(「#txtQty」)。val()是5,但它總是在其他地方。爲什麼?我從對象中獲取stockQty值,並將stockQty聲明爲全局變量,並從另一個函數中使用它。我試圖輸出這兩個值,他們是200和5.有什麼不對?javascript比較無法正常工作?

if(stockQty>0 && $("#txtQty").val() <= stockQty){} 
else{} 
+1

證明它如何不工作? –

+0

@ksh嘗試提醒$(「#txtQty」)。val()的值,並檢查輸出是什麼 – Shadow

+0

是的,我已經試過了。它是5. – ksh

回答

1

適合我。

看到這個小提琴:http://jsfiddle.net/nVd67/1/

var stockQty = 200; 
if(stockQty>0 && $("#txtQty").val() <= stockQty){ alert('true')} 
else{alert('false')} 
+0

編碼器是正確的! – KunJ

+0

我不直接分配stockQty值。我從物體中獲得。如果直接分配,它可以工作。 – ksh

+0

上面的代碼按預期工作。您必須在分配stockQty的值之前調用該函數,否則您不正確地分配stockQty。您是否嘗試過調試javascript並關注stockQty更新時的情況? – JuniorCoder

0

你可能會得到字符串值。使用parseInt()來比較數值。

if(parseInt(stockQty)>0 && parseInt($("#txtQty").val()) <= parseInt(stockQty)){} 
else{} 
+0

@jogesh_pi JuniorCoder正在傳遞整數值var stockQty = 200但上述問題未指定。 – Sumeet

+0

爲什麼var stockQty = 200;問題stockQty只有值被提到不是類型。@ jogesh_pi – Sumeet

+0

@jogesh_pi:why -1 ?? – Sumeet

3

5大於200的唯一時間是使用字符串比較;這隻會發生如果兩個操作數都是字符串,所以你應該確保在進行任何比較之前,這些值是正確的類型:

var inStock = +stockQty, // may have been a string 
stockRequested = +$("#txtQty").val(); // definitely a string 

if (stockRequested <= inStock) { 
}