IE中添加数字时的JavaScript问题

IE中添加数字时的JavaScript问题,javascript,Javascript,我有一个简单的表单,有5个文本框和3个答案(也是文本框)。表单使用数字输入为用户计算结果。我的问题是我的计算在IE中不起作用,但在Chrome和Firefox中都能正常工作 怎么了 以下是我的功能: function addNumbers() { var val1 = Number(document.getElementById("value1").value); var val2 = Number(document.getElementById("value2").value)

我有一个简单的表单,有5个文本框和3个答案(也是文本框)。表单使用数字输入为用户计算结果。我的问题是我的计算在IE中不起作用,但在Chrome和Firefox中都能正常工作

怎么了

以下是我的功能:

function addNumbers()
{
    var val1 = Number(document.getElementById("value1").value);
    var val2 = Number(document.getElementById("value2").value);
    var val3 = Number(document.getElementById("value3").value);
    var val4 = Number(document.getElementById("value4").value);
    var val5 = Number(document.getElementById("value5").value);
    var val6 = '100';
    var ansD1 = document.getElementById("answer1");
    ansD1.value = Number((val1 * val2) * (val4 / val6));
    var ansD2 = document.getElementById("answer2");
    ansD2.value = Number((val1 * val3) * (val5 / val6));
    var ansD3 = document.getElementById("answer3");
    ansD3.value = Number (ansD1.value - ansD2.value);
}
不使用数字,否则将它们视为字符串,而不使用数字,否则将它们视为字符串更改此行:

var val6 = '100';
为此:

var val6 = 100;
您希望所有的值都是实际的数字(而不是字符串),这样您就可以对它们进行数学运算

此外,这些行中不需要Number(),因为数值计算的结果已经是一个数字。另外,对答案字段的赋值只会将结果转换为字符串:

ansD1.value = Number((val1 * val2)*(val4/val6));
它们可以是这样的:

ansD1.value = (val1 * val2)*(val4/val6);
修改后的代码在IE中运行良好:。

更改此行:

var val6 = '100';
为此:

var val6 = 100;
您希望所有的值都是实际的数字(而不是字符串),这样您就可以对它们进行数学运算

此外,这些行中不需要Number(),因为数值计算的结果已经是一个数字。另外,对答案字段的赋值只会将结果转换为字符串:

ansD1.value = Number((val1 * val2)*(val4/val6));
它们可以是这样的:

ansD1.value = (val1 * val2)*(val4/val6);

修改后的代码在IE中运行良好:。

Number()
已经将字符串转换为数字,类似于
parseInt()
,只是数字处理整数或小数。我尝试了Number和parseInt,但不起作用。这似乎是另外一个问题,因为当在IE中运行代码时,它会将结果放在错误的文本框中,而在另一个文本框中会出现一个完整的“0”。
Number()
已经将字符串转换为数字,类似于
parseInt()
,除了数字处理整数或小数。我已经尝试了Number和parseInt,但我不会工作。这似乎是另外一个问题,因为当在IE中运行代码时,它会将结果放在错误的文本框中,并在另一个文本框中放置一个完整的“0”。要使其正常工作,第一个元素必须是numeric类型。查看此链接:@Floradu88-你认为什么不起作用?你的评论我不清楚。@Floradu88-也许你感到困惑,因为
val1
val2
,等等。。。已经是数字,因为从DOM检索值时,number()函数将显式类型转换为数字。因此,这里没有发生隐式类型转换,只有在将字符串赋给
ansD1.value
时,最终转换回字符串,并且隐式转换没有问题。谢谢您的帮助。我在你发布的例子中做得很好。然后我必须是另一个“显示”函数,在按下det按钮之前,我一直用它来覆盖det结果。@jfriend00
val
s不是数字,而是对象。与数学运算符一起使用时,对象将转换为字符串。唯一正确的方法是使用
parseInt/Float()
而不是
Number
-object转换输入字符串。在此转换之后,所有变量的行为都类似于脚本中的文字数字。要使其正常工作,第一个元素必须是numeric类型。查看此链接:@Floradu88-你认为什么不起作用?你的评论我不清楚。@Floradu88-也许你感到困惑,因为
val1
val2
,等等。。。已经是数字,因为从DOM检索值时,number()函数将显式类型转换为数字。因此,这里没有发生隐式类型转换,只有在将字符串赋给
ansD1.value
时,最终转换回字符串,并且隐式转换没有问题。谢谢您的帮助。我在你发布的例子中做得很好。然后我必须是另一个“显示”函数,在按下det按钮之前,我一直用它来覆盖det结果。@jfriend00
val
s不是数字,而是对象。与数学运算符一起使用时,对象将转换为字符串。唯一正确的方法是使用
parseInt/Float()
而不是
Number
-object转换输入字符串。在这个转换之后,所有变量的行为就像脚本中的文字数字一样。