我正在做一个简单的计算器,到目前为止,它对我来说工作得相当不错,除了当我试图输入大于9的数字时.如果我输入11+55,它会将第一个数字保存为2,将第二个数字保存为10,当我显然希望它保存11和55并返回66时,返回12.
对任何愿意花时间帮助我的人,我要提前表示感谢!
老实说,我对所有这些都是非常陌生的,但我非常确定这个问题在我的结果函数中的某个地方,在我的js文件的顶部,但我一直对它感到非常困惑.它似乎在添加它应该连接的某个地方?
这就是我要做的.
<body>
<h2>Calculator</h2>
<div class="top">
Output will show up here
<p id="calculations"></p>
</div>
<div class="buttons">
<button id="one" onclick="results(1)">1</button>
<button id="two" onclick="results(2)">2</button>
<button id="three" onclick="results(3)">3</button>
<button id="subtraction" onclick="setOperator(`-`)">-</button>
<button id="four" onclick="results(4)">4</button>
<button id="five" onclick="results(5)">5</button>
<button id="six" onclick="results(6)">6</button>
<button id="addition" onclick="setOperator(`+`)">+</button>
<button id="seven" onclick="results(7)">7</button>
<button id="eight" onclick="results(8)">8</button>
<button id="nine" onclick="results(9)">9</button>
<button id="divison" onclick="setOperator(`/`)">/</button>
<button id="zero" onclick="results(0)">0</button>
<button id="enter" onclick="enterButton()">Enter</button>
<button id="clear" onclick="clearResults()">Clear</button>
<button id="mulitplication" onclick="setOperator(`*`)">*</button>
</div>
</body>
</html>
let firstNumber = null;
let secondNumber = null;
let operator = null;
let result = null;
function results(input) {
document.getElementById("calculations").insertAdjacentHTML('beforeend', (input));
if (operator === null) {
// If operator is null, update firstNumber
if (firstNumber === null) {
firstNumber = input;
} else {
firstNumber += input;
}
} else {
// If operator is not null, update secondNumber
if (secondNumber === null) {
secondNumber = input;
} else {
secondNumber += input;
}
}
}
function calculateResult() {
if (firstNumber === null || secondNumber === null) {
return null;
}
const num1 = Number(firstNumber);
const num2 = Number(secondNumber);
if (isNaN(num1) || isNaN(num2)) {
return null;
}
switch (operator) {
case "+":
return Number(firstNumber) + Number(secondNumber);
case "-":
return Number(firstNumber) - Number(secondNumber);
case "*":
return Number(firstNumber) * Number(secondNumber);
case "/":
return Number(firstNumber) / Number(secondNumber);
default:
return null;
}
}
function enterButton() {
if (result === null) {
// Calculate the result and update the calculations element
const result = calculateResult();
if (result !== null) {
document.getElementById("calculations").innerHTML = result;
}
}
// Set firstNumber to the result, and reset secondNumber and operator
firstNumber = result;
secondNumber = null;
operator = null;
}