javascript - 为什么我只在 Javascript 计算器中的减号运算符中看到 NaN?
问题描述
我最近做了一个计算器,它工作正常,直到当我计算减号运算符的结果时 NaN 开始出现。我正在测试代码,它很好,然后我重新加载了选项卡,突然 NaN 开始出现在减号运算符中。请告诉为什么会发生这种情况以及如何解决它。
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;
}
else if (operator1 == "/") {
document.getElementById("result").innerHTML = "=" + firstNumber1/secondNumber1;
}
else if (operator1 == "*") {
document.getElementById("result").innerHTML = "=" + firstNumber1*secondNumber1;
}
else if (operator1 == "Ũ") {
document.getElementById("result").innerHTML = "=" + firstNumber1*secondNumber1;
}
else if (operator1 == "ũ") {
document.getElementById("result").innerHTML = "=" + firstNumber1/secondNumber1;
}
else {
document.getElementById("result").innerHTML = "Error 414! " + "Invalid Operator or value";
}
}
body {
background-color: green;
}
.operator {
width: 160px;
height: 60px;
font-size: 40px;
}
.button {
font-size: 40px;
background-color: white;
}
.button:hover {
font-size: 41px;
background-color: yellow;
}
.values {
height: 60px;
width: 760px;
font-size: 40px;
}
.result {
width: 1300px;
height: 190px;
border: 5px solid yellow;
text-align: center;
border-radius: 80px;
color: white;
font-size: 90px;
}
<!DOCTYPE html>
<html>
<head>
<title> Calculate it! </title>
</head>
<body>
<input type="number" id="firstNumber" placeholder="First value" class="values"> <br>
<input type="text" id="operator" placeholder="operator" class="operator"><br>
<input type="number" id="secondNumber" placeholder="Second value" class="values"> <br> <br>
<button onclick="btn001()" id="submit" class="button"> Calculate Result </button> <br> <br>
<p id="result" class="result">0</p>
</body>
</html>
解决方案
和运算/
符*
正在工作,因为变量会自动转换为 int,并且此操作在求和之前执行。
当您将任何内容添加到字符串时,其余部分将被转换为字符串,因此仅将它们转换为 int 是不够的(因为您将有类似"=" + 10 + 20
witch 的东西将被转换,"=" + "10" + 20 = "=10" + "20"
或者 if is -
then 将是"=" + "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);
}
...
您还可以用函数替换+
from
var firstNumber1 = +firstNumber.value;
和(作为另一个响应;它也可以正常工作)。但是你需要括号。var secondNumber1 = +secondNumber.value;
parseInt
推荐阅读
- node.js - 我在提供或部署 Firebase 托管功能时遇到问题
- react-native - 为什么我的 onEnter 道具没有被触发?(react-native-router-flux v4)
- android - 调用lifecycle.addObserver 后出现内存泄漏
- r - 在数据框中的组内按时间向后编号代数(gen:0、-1、-2 等)
- javascript - Azure Maps 上是否有任何绘图功能?
- c# - 如何在 LINQ 中将行转换为列
- elasticsearch - ElasticSearch 有什么好的布尔查询解析器吗?
- c++ - 通过索引运算符插入 boost::program_options::variables_map
- mockito - 由于控制器方法内部的方法调用,MockMvc 失败
- angular - 在我的函数 ngDoCheck() Angular 中关闭 matDialog 时出现问题