【发布时间】:2021-08-18 19:42:30
【问题描述】:
我正在尝试用 JS 制作一个基本的计算器。它正在为第一步工作。我的意思是它计算 1+3 = 4 但它不能计算 4+2 例如。实际上它在控制台上计算它但我不能在网页上显示它,所以 DOM。那么您知道为什么会这样吗?
const operations = {
'+': (a, b) => a + b,
'-': (a, b) => a - b,
'*': (a, b) => a * b,
'/': (a, b) => a / b
}
const doOpr = function (sign) {
labelUser.value += `${sign}`
// const deleteFn = function () {
// labelUser.value = labelUser.value.slice(0, labelUser.value.length - 1)
// }
// btnDelete.addEventListener('click', deleteFn)
const equalFn = function (sign) {
let numbers = labelUser.value.split(`${sign}`)
//console.log(numbers)
const operation = operations[`${sign}`]
let result = operation(+numbers[0], +numbers[1])
labelUser.value = result
//console.log(typeof result, numbers) //This line proves that result is a number. Not a NaN.
//Also it proves numbers array contains only two elements.
return
}
btnEqual.addEventListener('click', equalFn.bind(null, sign))
}
btnPlus.addEventListener('click', doOpr.bind(null, '+'))
btnExtr.addEventListener('click', doOpr.bind(null, '-'))
const btnPlus = document.querySelector('.btn-plus')
const btnExtr = document.querySelector('.btn-extr')
const btnEqual = document.querySelector('.btn-equal')
const btnDelete = document.querySelector('.btn-delete')
const labelUser = document.querySelector('.user__input')
const form = document.querySelector('.user__form')
form.reset()
const operations = {
'+': (a, b) => a + b,
'-': (a, b) => a - b,
'*': (a, b) => a * b,
'/': (a, b) => a / b
}
const doOpr = function (sign) {
labelUser.value += `${sign}`
// const deleteFn = function () {
// labelUser.value = labelUser.value.slice(0, labelUser.value.length - 1)
// }
// btnDelete.addEventListener('click', deleteFn)
const equalFn = function (sign) {
let numbers = labelUser.value.split(`${sign}`)
const operation = operations[`${sign}`]
let result = operation(+numbers[0], +numbers[1])
labelUser.value = result
console.log(typeof result, numbers)
return
}
btnEqual.addEventListener('click', equalFn.bind(null, sign))
}
btnPlus.addEventListener('click', doOpr.bind(null, '+'))
btnExtr.addEventListener('click', doOpr.bind(null, '-'))
*,
*::after,
*::before {
margin: 0;
padding: 0;
box-sizing: inherit;
}
html {
font-size: 62.5%;
box-sizing: border-box;
}
.container {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 25%;
height: 85%;
background-color: olive;
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(6, 1fr);
}
.user__form {
grid-row: 1/3;
grid-column: 1/-1;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.user__input {
width: 90%;
height: 80%;
font-size: 6rem;
text-align: right;
padding: 0 3rem;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Basic Calculator</title>
<link rel="stylesheet" href="./css/style.css">
</head>
<body>
<div class="container">
<form class="user__form">
<input type="text" class="user__input" placeholder="Entry num">
</form>
<button class="btn-plus">
addition
</button>
<button class="btn-extr">
extraction
</button>
<button class="btn-equal">
equal
</button>
<button class="btn-delete">
delete
</button>
</div>
<script src="./script.js"></script>
</body>
</html>
在这里你可以看到,我先输入了2+1,它计算并显示它,然后我再次尝试相同的操作,它计算但不能显示在页面上。
【问题讨论】:
-
请提供一个可运行的minimal reproducible example 来演示该问题
-
好吧,伙计们。这是缺点。
-
伙计们,你能找到什么吗?或者我应该重新发布这个问题吗?
标签: javascript calculator nan