2016-10-28 4 views
0

Idealy, я хотел бы, чтобы мой маленький проект имел функции памяти M-, M +, MR и MC. Я думал о отдельных функциях и переменных, чтобы удерживать M- и M +. Это нормальный подход или есть лучший?Создайте MR и MC в калькуляторе javascript

Любая идея, что может быть неправильно с моим скриптом? если что-то не так?

номер-дисплей ID является фактическим экраном калькулятора

код:

$(document).ready(function(){ 
    var display = ""; 
    var operators = ["/", "*", "-", "+"]; 
    var decimalAdded = false; 

    $("button").click(function() { 
     var key = $(this).text(); 

     //update screen by adding display string to screen with maximum 19 numbers viewable 
     function updateDisplay() { 
      if (display.length > 19) { 
       $("#number-display").html(display.substr(display.length - 19, display.length)); 
      } else { 
       $("#number-display").html(display.substr(0, 19)); 
      } 
     } 
     //clear all entries by resetting display and variables 
     if (key === "AC" || key === "ON" || key === "MC") { 
      decimalAdded = false; 
      display = ""; 
      $("#number-display").html("0"); 
     } 

     else if (key === "OFF") { 
      decimalAdded = false; 
      display = ""; 
      $("#number-display").html(""); 
     } 


     //clear previous character and reset decimal bool if last character is decimal 
     else if (key === "CE") { 
      if (display.substr(display.length - 1, display.length) === ".") { 
       decimalAdded = false; 
      } 
      display = display.substr(0, display.length - 1); 
      updateDisplay(); 
     } 

     //add key to display if key is a number 
     else if (!isNaN(key)) { 
      display += key; 
      updateDisplay(); 
     } 
     //check that . is the first in the number before adding and add 0. or just . 
     else if (key === ".") { 
      if (!decimalAdded) { 
       if(display > 0){ 
        display += key; 
       } 
       else { 
        display += "0" + key; 
       } 
       decimalAdded = true; 
       updateDisplay(); 
      } 
     } 
     //if key is basic operator, check that the last input was a number before inputting 
     else if (operators.indexOf(key) > -1) { 
      decimalAdded = false; 
      //first input is a number 
      if (display.length > 0 && !isNaN(display.substr(display.length - 1, display.length))) { 
       display += key; 
       updateDisplay(); 
      } 
     // allow minus sign as first input 
      else if (display.length === 0 && key === "-") { 
       display += key; 
       updateDisplay(); 
      } 

     } 
     // calculate square root of number 

     else if ($(this).id === "sqrt") { 

       var tempStore = display.html(); 
       $("#number-display").html(eval(Math.sqrt(tempStore))); 
       decimalAdded = false; 
     } 

     // change sign of number 

     else if ($(this).id === "plusmn") { 
      var newNum = display * -1; 
      $("#number-display").html(newNum); 
     } 

     // create memory plus and minus and calculate MR 
     else if (key === "M-") { 

     } 
     else if (key === "M+") { 

     } 

     // percentage function 

     else if (key === "%"){ 

     } 

     else if (key == "=") { 
      //if last input is a decimal or operator, remove from display 
      if (isNaN(display.substr(display.length - 1, display.length))) { 
       display = display.substr(0, display.length - 1); 
      } 
      var calc = display; 
      calc = eval(calc); 
      display = String(calc); 
      if (display.indexOf('.')) { 
       decimalAdded = true; 
      } else { 
       decimalAdded = false; 
      } 
      $("#number-display").html(display); 
     } 
    });}); 

ответ

0

Одним из вариантов является switch заявления, которое будет выглядеть примерно так:

switch (key) { 
    case "M-": 
    // do stuff 
    break; 
    case "M+": 
    // do stuff 
    break; 
    case "%": 
    // do stuff 
    break; 
    case "=": 
    // do stuff 
    break; 
} 

Подробнее документация по MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch

+0

Thanks Pau Я рассмотрю это. Его тип результата if/else не так ли? Если я добавлю переменные для M = и M- и создаю функцию для &, тогда ее в основном решена: P –

+0

Да, это похоже на if/else, за исключением того, что это более читаемо, и вы можете легко добавить больше случаев. – PaulBGD