Я, кажется, получаю ошибку NaN в результате в моем коде JavaScript.
Я довольно новичок в этом, был бы признателен за любую помощь.
Решается путем придания значения общему вар.
5 ответов
Есть пара проблем:
- Вы должны использовать
parseFloat
вместо использования строк. - Вы должны инициализировать
total
(это то, что вызываетnan
) - Вы должны правильно инициализировать массивы.
function tax() {
var price = new Array(10);
var quant = new Array(10);
var taxam = 18;
var total = 0;
for(i=0;i<10;i++) {
quant[i] = parseFloat(prompt("Insert Quantity: "));
price[i] = parseFloat(prompt("Insert Price: "));
}
for(i=0;i<10;i++) {
total += price[i] * quant[i];
}
total = total * (taxam / 100);
alert(total);
}
Вы должны разобрать строковые переменные в число:
function tax() {
var price = [10];
var quant = [10];
var taxam = 18;
var total = 0;
for(i=0;i<10;i++) {
quant[i] = Number(prompt("Insert Quantity: "));
price[i] = Number(prompt("Insert Price: "));
}
for(i=0;i<10;i++) {
total += price[i] * quant[i];
}
total = total * (taxam / 100);
alert(total);
}
tax()
Во-первых, JavaScript это не Java;)
Кажется, вы пытаетесь инициализировать ваши массивы длиной 10. Это работает в Java, но в Javascript массив динамический и записывает:
myArray = [10];
Просто установит значение 10
в первом индексе массива.
Затем, когда вы предложите пользователю ввести числа, числа будут интерпретироваться как строка. Так что было бы хорошо привести его в число, прежде чем работать с ним. Чтобы бросить это:
var value = '10000';
valueAsInt = parseFloat('10000',10);
//or simply
valueAsInt = +value;
Теперь мы подошли к вашей проблеме, так как total
не инициализирован, первое влияние будет
undefined += n;
Это даст NaN
.
Так что просто инициализируйте total
перед его использованием:
var total = 0;
Я думаю, с этим var price = [10]
вы пытались создать массив с 10 числами, но это не так, как это работает в Javascript var price = [10]
даст вам массив с 10 в 0-й позиции. Единственный другой трюк, который я хотел бы сделать, - это сделать var price = [1,2,3,4,5,6,7,8,9,10]
, чтобы на самом деле добиться того, на что вы нацелены изначально
Сначала нужно инициализировать итоговую переменную, потому что она изначально не определена
var total = 0;
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.