链接基本计算器?

时间:2017-10-12 02:54:44

标签: javascript

  

我的计算器一次只能操作2个数字。在按=之前,我不确定如何使用不同的运算符链接多于2个数字。任何人都可以暗示如何做到这一点吗? (下面是我的javascript代码)

     

链接codepen:https://codepen.io/cmtran/pen/LzmbLM?editors=1111

     $(document).ready(function(){
    var testNumLength = function(number) {
        if (number.length > 9) {
            totaldiv.text(number.substr(number.length-9,9));
            if (number.length > 15) {
                number = "";
                totaldiv.text("Err");
            }
        } 
    };
      var entry = "";
    var current = ""; //after operator is entered
    var operator = "";
  var res = "";
    var totaldiv = $("#total");
    totaldiv.text("0");

  $("#numbers a").not("#clear,#clearall").click(function(){
    entry += $(this).text();//take the text of the numbers when clicked and append it to var entry
    //display input1 on screen
    totaldiv.html(entry);
    testNumLength(entry);
  })

  $("#clear,#clearall").click(function(){
    entry = "";
    if ($(this).attr("id") === "clearall"){
      current = "";
    }
    totaldiv.text("0");

  })

  $("#operators a").click(function(){
    //append operators to var operator
     operator = $(this).text();

      current = entry;
      entry = "";



    })

  $("#decimal").click(function(){
        //var numOfDecs = 0;
        for (var i=0;i<entry.length;i++){

            if (entry.indexOf(".")== -1){
                entry += ".";
               // numOfDecs += 1;
               }
        }
        totaldiv.text(entry);
        testNumLength(entry);
    })

  $("#equals").click(function(){
    var result = eval(current + operator + entry);
    entry = result;

    totaldiv.html(result.toFixed(2));


  })

})

1 个答案:

答案 0 :(得分:0)

要开始链接内容,您需要支持更动态的数据结构,而不是将运算符和2个数字保存为自己的字段。

你可以有一个包含所有数字和操作数的单一条目数组,然后循环通过它们来计算(忽略操作顺序)

这样的数组看起来像下面的样本数据:

[50, 'times', 25, 'plus', 10]

然后你可以遍历它以确定第一个操作的答案(元素0,1,2:50x25),然后是下一个答案加上10,依此类推。