在数组javascript中加入数字

时间:2016-01-15 20:03:29

标签: javascript

我有不同的按钮,看起来像下面(从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

4 个答案:

答案 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;元件。在这种情况下,两个变量都是全局的。

我希望它有所帮助。