2011-11-02 27 views
-1

編輯工作http://jsfiddle.net/VnXtP/長度不經過乘法

爲什麼dosent這項工作? http://jsfiddle.net/uc7kT/

<input type="text" name="item_quantity" id="item_quantity" value="1" /> 
<input type="text" name="item_price" id="item_price" value="24998" hidden="hidden" /> 

$('#item_quantity').change(function() { 
    var quantity = $('#item_quantity').val(); 
    var price = $('#item_price').val(); 
    var total = quantity * price; 

    alert(total.length); 
}); 

回答

1

長度是爲字符串定義的,而不是數字。如果您希望將其作爲數學運算來執行,則必須先將輸入字符串轉換爲數字。如果你真的想要的數字字符串的長度(我不知道你爲什麼會),您需要將數轉換到一個字符串:

$('#item_quantity').change(function() { 
    var quantity = parseInt($('#item_quantity').val(), 10); 
    var price = parseFloat($('#item_price').val()); 
    var total = quantity * price; 

    alert(total.toString().length); 
}); 
+1

如果您使用'parseInt(num,radix)',請不要忘記基數。這對新手來說是一個非常常見的錯誤。 –

+0

@SamuelLiew添加了基數。 –

+0

這是toString()(我已經發現了關於parseInt),它解決了它: alert(total.toString()。length); 謝謝! –

0

用途:

alert(total); 

相反的:

alert(total.length); 

您可能還需要考慮在執行之前轉換輸入的值,爲float,或整數值數學。

http://jsfiddle.net/samliew/uc7kT/5/

0
var quantity = $('#item_quantity').val(); 
var price = $('#item_price').val(); 

item_quantityitem_price是文本輸入,你需要它,你之前多次更改爲整數。使用parseInt()來做到這一點。

var quantity = parseInt($('#item_quantity').val(),10); 
    var price = parseInt($('#item_price').val(),10); 

並使用alert(total);alert(total.length);

+0

爲什麼downvote?只是爲了知道我的錯誤 – Kris

+1

如果您使用'parseInt(num,radix)',請不要忘記基數。這對新手來說是一個非常常見的錯誤。 –

+1

@SamuelLiew:我發現這些線從w3schools.org 「 如果省略radix參數,JavaScript的假定: 如果字符串開頭‘0X’,基數爲16(十六進制) 如果字符串開頭「0」,基數爲8(八進制),不建議使用此功能 如果字符串以任何其他值開頭,基數爲10(十進制)「 – Kris

0

總是一個數字。它沒有「長度」屬性。

嘗試

alert(total); 

我想這是你想要的。

0

在javascript中的數是和字符串一個字符串。

有時可能會令人困惑的是,當需要時(例如向其添加字符串),數字可以自動成爲字符串。

數字沒有length屬性,而是使用字符串。同樣在javascript中,當您向對象請求一個通常不存在的屬性時,您只需獲取undefined值。