虽然运营商未定义

时间:2016-01-28 11:52:02

标签: javascript

我想在javascript中制作一个小型计算器。 我得到的html代码看起来像这样(对于所有数字)

function calcNum(i) {       
    myNumbers.push(i);
    var x = document.getElementById("screen").innerHTML = myNumbers.join("");       

}

calcnumber函数如下:

function operator(op) {
    var operator = op;
    var y = document.getElementById("screen").innerHTML = operator;
}

和运算符函数如下:

while(op == "undefined") {
   keep pushing numbers // but this does not work
}

我的目标是让它像这样: 如果按1,2,3我希望屏幕元素显示" 123" (如果我按下" +"我想" +"显示(它确实如此)但是当按下操作员,然后按下一个新号码时我想让它开始一个新号码,现在如果我按下" 123"然后+然后" 456"我明白了:

123456,而我希望它显示" 456",因此从一个新数字开始。希望一切都清楚。

我想我可以将它添加到calcNum函数中:

{{1}}

最后我想构建一个calc函数,它将所有数字作为一个运算符按下作为FIRST数字,然后与运算符和第二个数字相连,并将它们加在一起。

3 个答案:

答案 0 :(得分:0)

像这样更改你的功能

var numbers = "";
function calcNum(i) {       
myNumbers.push(i);
numbers +=i;
var x = document.getElementById("screen").innerHTML = numbers;       

}

function operator(op) {
var operator = op;
var y = document.getElementById("screen").innerHTML = operator;
myNumbers.push(op);
numbers = "";
}

答案 1 :(得分:0)

在上面声明:

var leftOperand = null;
var lastOperator = null;

在calcNum中:

if(lastOperator !== null) {
  document.getElementById("screen").innerHTML = '';
  leftOperand = myNumbers.join('');
  myNumbers = [];
  lastOperator = null;
}
// rest of the function

在运营商:

lastOperator = op;
// rest of the function

答案 2 :(得分:0)

我在您的代码中看到了几个问题,但我不知道是否是因为您没有在您的问题中复制所有代码。

首先,operator函数不正确:您为局部变量提供与函数相同的名称。如果您希望函数返回值,请使用return关键字。

  

我想我可以将它添加到calcNum函数中:

     

while(op ==“undefined”){继续推送数字//但是这样做   不工作}

op在哪里定义?我看到的唯一opoperator函数的局部变量。 undefined中的calcNum始终为if (myVar == "undefined")

另请注意,如果要测试变量是否未定义,则不应测试

if(typeof myVar == "undefined")

var currentNumber= "";
var entries = []
function calcNum(i) {       
    currentNumber +=i;
    document.getElementById("screen").innerHTML = currentNumber;       
}


function operator(op) {
    var y = document.getElementById("screen").innerHTML = op;
    //Note that you could already process the entered operations as if you clicked on '=' 
    //and display the result instead of displaying the operation...
    if(currentNumber != ""){//there must be a number entered before you click on an operator
        entries .push(currentNumber);
        entries .push(op);
        currentNumber= "";

    }
}

最后我会以这种方式更改你的代码(应该进行测试):

=

当你点击<View android:layout_width="match_parent" android:layout_height="20dp" android:background="@color/YOUR_BACKGROUND"> </View> ...

时,你仍然需要实现你的工作