2011-11-02 25 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值。