длина не работает после умножения

#javascript #multiplication

#javascript #умножение

Вопрос:

Редактировать: решение: 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);
});
 

Ответ №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. Это была toString() (я уже узнал о parseInt), которая решила проблему: alert(total.toString().length); Спасибо!

Ответ №2:

Использовать:

 alert(total);
 

Вместо:

 alert(total.length);
 

Вы также можете рассмотреть возможность преобразования входных значений в значение с плавающей точкой или целое число перед выполнением математических вычислений.

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

Ответ №3:

итого — это число. У него нет свойства «длина».

Попробуйте

 alert(total);
 

Я думаю, это то, что вы хотите.

Ответ №4:

В javascript число — это число, а строка — это строка.

Что иногда может сбивать с толку, так это то, что число может автоматически превращаться в строку, когда это необходимо (например, добавление к нему строки).

Числа не имеют length свойства, вместо этого есть строки. Также в javascript, когда вы запрашиваете у объекта свойство, которого обычно нет, вы просто получаете undefined значение.

Ответ №5:

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

item_quantity и item_price являются текстовыми вводами, и вам нужно изменить его на целое число перед умножением. для этого используйте parseInt() .

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

и использовать alert(total); не alert(total.length);