结果得到 NaN 错误
Getting NaN error as the result
我的 JavaScript 代码中似乎出现了 NaN 错误。
我对此很陌生,希望得到任何帮助。
通过给总变量赋值解决
有几个问题:
- 您应该使用
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()
我猜想用这个 var price = [10]
你试图创建一个包含 10 个数字的数组,但这不是它在 Javascript 中的工作方式 var price = [10]
会给你一个数组10 在第 0 个位置。我要做的唯一其他调整是 make var price = [1,2,3,4,5,6,7,8,9,10]
以实际实现您最初设定的目标
首先,Java脚本不是Java ;)
您似乎试图用长度为 10 的数组来初始化。这在 Java 中有效,但在 Java 脚本中,数组是动态的,并且写入:
myArray = [10];
只会在数组的第一个索引中设置值 10
。
然后,当您提示用户输入数字时,数字将被解释为字符串。
所以最好在使用它之前将它转换为一个数字。
投射它:
var value = '10000';
valueAsInt = parseFloat('10000',10);
//or simply
valueAsInt = +value;
现在我们来解决你的问题,因为total
没有初始化,第一个是
undefined += n;
这将给出 NaN
.
所以在使用之前初始化 total
:
var total = 0;
你必须先初始化 total 变量,因为它最初是未定义的
var total = 0;
我的 JavaScript 代码中似乎出现了 NaN 错误。
我对此很陌生,希望得到任何帮助。
通过给总变量赋值解决
有几个问题:
- 您应该使用
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()
我猜想用这个 var price = [10]
你试图创建一个包含 10 个数字的数组,但这不是它在 Javascript 中的工作方式 var price = [10]
会给你一个数组10 在第 0 个位置。我要做的唯一其他调整是 make var price = [1,2,3,4,5,6,7,8,9,10]
以实际实现您最初设定的目标
首先,Java脚本不是Java ;)
您似乎试图用长度为 10 的数组来初始化。这在 Java 中有效,但在 Java 脚本中,数组是动态的,并且写入:
myArray = [10];
只会在数组的第一个索引中设置值 10
。
然后,当您提示用户输入数字时,数字将被解释为字符串。 所以最好在使用它之前将它转换为一个数字。 投射它:
var value = '10000';
valueAsInt = parseFloat('10000',10);
//or simply
valueAsInt = +value;
现在我们来解决你的问题,因为total
没有初始化,第一个是
undefined += n;
这将给出 NaN
.
所以在使用之前初始化 total
:
var total = 0;
你必须先初始化 total 变量,因为它最初是未定义的
var total = 0;