乘法后长度不起作用

时间:2011-11-02 06:06:41

标签: javascript multiplication

修改:解决方案:http://jsfiddle.net/VnXtP/

为什么这不起作用? 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);
});

5 个答案:

答案 0 :(得分: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 :(得分:0)

使用:

alert(total);

而不是:

alert(total.length);

您可能还需要考虑在执行数学运算之前将输入值转换为float或整数值。

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

答案 2 :(得分:0)

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

item_quantityitem_price是文本输入,您需要在乘法之前将其更改为Integer。使用parseInt()来做到这一点。

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

并使用alert(total);而不是alert(total.length);

答案 3 :(得分:0)

总数是一个数字。它没有“长度”属性。

尝试

alert(total);

我想这就是你想要的。

答案 4 :(得分:0)

在javascript中,数字是数字,字符串是字符串。

有时令人困惑的是,数字可以在需要时自动变为字符串(例如向其中添加字符串)。

数字没有length属性,而是字符串。同样在javascript中,当您向对象询问通常不存在的属性时,您只需获得undefined值。