我有不同的按钮,看起来像下面(从1到9)
<button type="button" onclick="calculatorNumber(1)">
它引出了以下功能:
function calculatorNumber(i) {
myNumbers.push(i);
var x = document.getElementById("screen").innerHTML = myNumbers.join("");
但它并不像我喜欢的那样工作。如果我按3号,然后按4号,3号和3号。 4存储在[0]和[1]的数组中但是我希望它们存储在同一个地方和34中。任何想法?
我尝试通过以下代码增强功能,但它似乎不起作用:
function calculatorNumber(i) {
myNumbers.push(i);
var x = document.getElementById("screen").innerHTML = myNumbers.join(""); //joining them together without comma
myNumbers = []; //then empty the array altogether
myNumbers.push(x); // and then push the new value in
答案 0 :(得分:1)
您不需要一系列数字。它只是一个数字:
theOneNumber = theOneNumber * 10 + i;
所以你从0开始。
按3 =&gt;数字是3
按4 =&gt;数字是34
按5 =&gt;号码是345
答案 1 :(得分:1)
您需要保持推送数字。请删除此行:
myNumbers = []; //then empty the array altogether
工作示例
var myNumbers = [];
function calculatorNumber(i) {
myNumbers.push(i);
document.getElementById("screen").innerHTML = myNumbers.join("");
}
function cl() {
myNumbers = [];
document.getElementById("screen").innerHTML = "";
}
<div id="screen"></div><br>
<button type="button" onclick="calculatorNumber(1)">1</button>
<button type="button" onclick="calculatorNumber(2)">2</button>
<button type="button" onclick="cl()">CL</button>
带数字
var myNumbers = [0], operator = [];
function calculatorNumber(i) {
myNumbers[myNumbers.length - 1] = myNumbers[myNumbers.length - 1] *10 + i;
updateScreen();
}
function cl() {
myNumbers[myNumbers.length - 1] = 0;
updateScreen();
}
function plus() {
operator.push(p);
myNumbers.push(0);
updateScreen();
}
function p(b, a) {
myNumbers.push(a + b);
}
function equal() {
operator.length && operator.pop()(myNumbers.pop(), myNumbers.pop());
updateScreen();
}
function updateScreen() {
document.getElementById("screen").innerHTML = myNumbers[myNumbers.length - 1];
}
<div id="screen">0</div><br>
<button type="button" onclick="calculatorNumber(1)">1</button>
<button type="button" onclick="calculatorNumber(2)">2</button>
<button type="button" onclick="cl()">CL</button>
<button type="button" onclick="plus()">+</button>
<button type="button" onclick="equal()">=</button>
答案 2 :(得分:0)
这解决了您当前的问题:
var lastIndex = myNumbers.length - 1;
myNumbers[lastIndex] = myNumbers[lastIndex] * 10 + i;
但是,我不知道你想如何处理运营商。
答案 3 :(得分:0)
您只需连接数组中的数字并在运行中将它们转换为字符串。
例如:
myNums = [1, 2, 3]
var text = '';
for (i = 0; i < myNums.length; i++) {
text += myNums[i].toString();
}
返回&#39; 123&#39;
然后:
var x = document.getElementById("screen").innerHTML = text;
也许你可以把它分成两个功能:
var myNumbers = [];
text = '';
function getMyNumber(i){
myNumbers.push(i);
}
function getText(myNumbers){
for (i = 0; i < myNumbers.length; i++) {
text += myNumbers[i].toString();
}
}
适当地调用这些函数(首先通过调用循环,我不知道你如何获得输入,然后只用myNumbers作为参数调用第二个函数),然后填充你的屏幕&#39;元件。在这种情况下,两个变量都是全局的。
我希望它有所帮助。