我想在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数字,然后与运算符和第二个数字相连,并将它们加在一起。
答案 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
在哪里定义?我看到的唯一op
是operator
函数的局部变量。 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>
...