我正在尝试制作一个简单的计算器。但是,在尝试添加,减去,乘以和除以两位数时,我遇到了问题。到目前为止,当我插入一个3时,它让我,但如果我再次按3它将只显示另外3而不是33。我如何修复我的Javascript以便能够计算两位数(甚至更多) 。到目前为止,这就是我对这个特殊问题的看法
var firstNumber;
var secondNumber;
var clear;
var operation;
function calculate() {
var answer;
if (operation == "+") {
answer = firstNumber + secondNumber;
} else if (operation == "-") {
answer = firstNumber - secondNumber;
} else if (operation == "*") {
answer = firstNumber * secondNumber;
}else if (operation == "/") {
answer = firstNumber / secondNumber;
}
firstNumber = answer;
displayAnswer(answer)
}
}
function DisplayOutput(data) {
var display = firstNumber + " " + operation + " " + secondNumber;
document.getElementById('answer').textContent = data;
}
function SaveNumber(number) {
if (firstNumber == undefined) {
firstNumber = number;
}else if (firstNumber != undefined) {
secondNumber = number;
}
DisplayOutput(number);
}
function Operation(op){
operation = op;
DisplayOutput(op);
}
function displayAnswer(answer){
document.getElementById('answer').textContent=answer;
}
function clearData(){
firstNumber = null;
secondNumber = null;
answer = 0;
DisplayOutput(answer);
}
答案 0 :(得分:0)
我会尝试解释保罗哈格蒂在斯坦福的目标c课程中用他的计算器做的事情。
添加一个变量,用于跟踪用户何时按下数字。
例如......
var userIsInTheMiddleOfTyping = false;
当用户按下某个数字时,此var会将其值更改为true,并将新数字与您已有的数字连接起来。当用户输入一个新数字时,你检查这个var,如果它是真的那么你再次连接。
当用户按下操作数(+, - ,x等)时,将var的值重置为false,这样就知道用户输入了数字,输入的下一个数字是新的。
答案 1 :(得分:0)
我相信当你输入一个数字时,你会使用函数SaveNumber。
首先,你不需要在else之后的if,else已经是“if(firstNumber!= undefined)”。
其次,如果放置前3个,则会定义firstNumber,因此您正在更改secondNumber。 您需要做的是仅在插入运算符时更改为secondNumber。 为此,您可以创建一个辅助变量。
第三,你如何添加数字?
var isFirstNumber = true;
...
function SaveNumber(number) {
if (isFirstNumber) {
firstNumber = firstNumber*10; // This shifts the inserted digits to the left
firstNumber = firstNumber + number;
} else {
secondNumber = secondNumber*10;
secondNumber = secondNumber + number;
}
DisplayOutput(number);
}
在处理输入的地方,当你得到一个操作员时,你应该这样做:
isFirstNumber = false;