2017-10-12 69 views
0

我的计算器一次只能操作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)); 


    }) 

}) 

回答

0

要启动链接的东西,你将需要支持更多的动态数据结构不是保存操作员和2号作为自己的田地。

你可以有一个单一的入口阵列包含有序提交,然后循环中的所有数字和操作数通过它们来计算(忽略操作顺序)

这样的阵列可以看起来像样本数据如下:

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

然后,你可以通过循环,以确定所述第一操作(元素0,1,2:50x25)的答案再下其是答案加10,等等。