Javascript计算器两位数

时间:2014-03-28 02:48:41

标签: javascript calculator

我正在尝试制作一个简单的计算器。但是,在尝试添加,减去,乘以和除以两位数时,我遇到了问题。到目前为止,当我插入一个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);
}

2 个答案:

答案 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;