为什么我只能在Javascript计算器中看到减号运算符中的NaN?

为什么我只能在Javascript计算器中看到减号运算符中的NaN?,javascript,nan,Javascript,Nan,我最近做了一个计算器,它工作正常,直到我计算负号运算符的结果时NaN开始出现。我正在测试代码,结果很好,然后我重新加载了选项卡,突然NaN开始出现在减号操作符中。请告诉我为什么会发生这种情况以及如何解决它 功能btn001(){ var firstNumber1=firstNumber.value; var运算符1=运算符.value; var secondNumber1=secondNumber.value; 如果(运算符1==“-”){ document.getElementById(“结

我最近做了一个计算器,它工作正常,直到我计算负号运算符的结果时NaN开始出现。我正在测试代码,结果很好,然后我重新加载了选项卡,突然NaN开始出现在减号操作符中。请告诉我为什么会发生这种情况以及如何解决它

功能btn001(){
var firstNumber1=firstNumber.value;
var运算符1=运算符.value;
var secondNumber1=secondNumber.value;
如果(运算符1==“-”){
document.getElementById(“结果”).innerHTML=“=”+firstNumber1-secondNumber1;
}
else if(运算符1==“+”){
document.getElementById(“结果”).innerHTML=“=”+firstNumber1+secondNumber1;
}
else if(运算符1==“/”){
document.getElementById(“结果”).innerHTML=“=”+firstNumber1/secondNumber1;
}
else if(运算符1==“*”){
document.getElementById(“结果”).innerHTML=“=”+firstNumber1*secondNumber1;
}
否则如果(运算符1==“Ũ”){
document.getElementById(“结果”).innerHTML=“=”+firstNumber1*secondNumber1;
}
否则如果(运算符1==“ũ”){
document.getElementById(“结果”).innerHTML=“=”+firstNumber1/secondNumber1;
}
否则{
document.getElementById(“结果”).innerHTML=“错误414!”+“无效的运算符或值”;
}
}
正文{
背景颜色:绿色;
}
.接线员{
宽度:160px;
高度:60px;
字体大小:40px;
}
.按钮{
字体大小:40px;
背景色:白色;
}
.按钮:悬停{
字体大小:41px;
背景颜色:黄色;
}
.价值观{
高度:60px;
宽度:760px;
字体大小:40px;
}
.结果{
宽度:1300px;
高度:190px;
边框:5px纯黄色;
文本对齐:居中;
边界半径:80px;
颜色:白色;
字体大小:90px;
}

算算吧!




计算结果

0


由于变量自动转换为int,并且在求和之前执行此操作,
/
*
运算符正在工作

当您向字符串添加任何内容时,其余内容将转换为字符串,因此仅将其转换为int是不够的(因为您将有类似于
“=”+10+20
的内容,它们将在
中转换“=”+“10”+20=“=10”+“20”
,或者如果是
-
,则将是
“=”+“10”-20
“=10”-20仍然不是一个数字

为了使其工作,请转换数字并使用括号。例如:

  function btn001() {
    var firstNumber1 = +firstNumber.value;
    var operator1 = operator.value;
    var secondNumber1 = +secondNumber.value;
    if (operator1 == "-") {
      document.getElementById("result").innerHTML = "=" + (firstNumber1- secondNumber1);
    }
    else if (operator1 == "+") {
      document.getElementById("result").innerHTML = "=" (firstNumber1+secondNumber1);
    }
...
您还可以从中替换
+

var-firstNumber1=+firstNumber1.value;
var-secondNumber1=+secondNumber1.value;
使用
parseInt
函数(作为另一个响应,它也可以很好地工作)。但是您将需要参数设置。

“=”+firstNumber1
在操作发生之前被连接。在语句周围添加一个括号,并将其转换为前面的数字:
“=”+(+firstNumber1-+secondNumber1)
此外,使用
文档.getElementById(“firstNumber”).value
而不是直接使用命名元素
firstNumber.value