结果导致NaN错误

时间:2015-12-16 08:10:14

标签: javascript nan

我似乎在JavaScript代码中收到了NaN错误。

我对此很陌生,不胜感激任何帮助。

通过给总变量赋值来解决。

5 个答案:

答案 0 :(得分:2)

有几个问题:

  • 您应该使用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);
}

答案 1 :(得分:1)

我猜这个var price = [10]你试图创建一个包含10个数字的数组,但这不是它在Javascript中工作的方式var price = [1,2,3,4,5,6,7,8,9,10]会给你一个在第0位有10的数组。我要做的唯一其他调整是让 ;with a as (select * , row_number() over (order by (select 1)) r from @t), b as (select * , row_number() over (partition by agg,RManager order by r) r1 from a) select t.RManager,t.Score,t1.Score,t.Agg,t.Rank,t1.Rank from b t join (select * from b where r1=2 ) t1 on t.Agg=t1.Agg and t.RManager=t1.RManager where t.r1=1 order by agg desc 实际达到你为初始设定的目的

答案 2 :(得分:0)

首先,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;

答案 3 :(得分:0)

你必须首先初始化总变量,因为它最初是未定义的

var total = 0;

答案 4 :(得分:-1)

您必须将String变量解析为Number:

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()