длина не работает после умножения - PullRequest
0 голосов
/ 02 ноября 2011

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

1 голос
/ 02 ноября 2011

Длина определяется для строк, а не чисел.Если вы хотите сделать это как математическую операцию, вы должны сначала преобразовать входные строки в числа.Если вы действительно хотите длину строки чисел (я не знаю, почему вы это сделали), вам нужно сначала преобразовать число в строку:

$('#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);
});
0 голосов
/ 02 ноября 2011

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

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

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

0 голосов
/ 02 ноября 2011
var quantity = $('#item_quantity').val();
 var price = $('#item_price').val();

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

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

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

0 голосов
/ 02 ноября 2011

общее число. У него нет свойства "длина".

Попробуйте

alert(total);

Полагаю, это то, что вы хотите.

0 голосов
/ 02 ноября 2011

Использование:

alert(total);

Вместо:

alert(total.length);

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...