【问题标题】:Calculator: How do I get the result of the equations? [duplicate]计算器:我如何得到方程的结果? [复制]
【发布时间】:2021-06-30 08:31:19
【问题描述】:

数字显示在屏幕上。现在,我如何创建一个“getResult”函数,当您单击等号按钮以从我的操作()函数中实际返回每个方程的结果时,该函数会起作用?现在,当您单击等号时,最后一个数字仍保留在显示屏上,并且没有任何反应。

const NUMBERS = document.querySelectorAll('.number-btn');
const equal=document.querySelector('.equalbtn');
const clear=document.querySelector('.clearbtn');
const operator=document.querySelectorAll('.operator')

let a;
let b;
let result;
let operand;


  
let aIsCurrent = true;
let operandIsPressed = false;

function add(a, b) {
    return (a + b).toFixed(2);
  }
  function substract(a, b) {
    return (a - b).toFixed(2);
  }
  function multiply(a, b) {
    return (a * b).toFixed(2);
  }
  function divide(a, b) {
    return (a / b).toFixed(2);
  }
  
  function operate(a, b, operator) {
    switch (operator) {
      case 'sum':
        result= add(a, b);
        break;
      case 'subtract':
        result= substract(a, b);
        break;
      case 'multiply':
        result= multiply(a, b);
        break;
      case 'divide':
        result= divide(a, b);
        break;
      
    }
  };
  
  function insertToDisplay(value) {
    if (operandIsPressed) {
      DISPLAY.textContent = value;
      operandIsPressed = false;
    } else {
      DISPLAY.textContent += value;
    }
  }
  
  function storeOperand(value) {
    operandIsPressed = true;
    if (result !== undefined) {
      a = result;
      result = undefined;
    } else if (aIsCurrent) {
      a = Number(DISPLAY.textContent);
      aIsCurrent = false;
    } else {
      b = Number(DISPLAY.textContent);
      result = operate(a, b, operator);
      a = b = undefined;
      DISPLAY.textContent = resultNumber;
    }
    operand = value;
  }
  
  function getResult(){
     
     };

  function clearDisplay () {
      DISPLAY.textContent='';
      return;
  };
  

//event listeners
NUMBERS.forEach((button) => {
button.addEventListener('click', (e) => insertToDisplay(button.value));
  });
  
clear.addEventListener('click', clearDisplay);

operator.forEach((button) => {
 button.addEventListener('click', (e) => storeOperand(button.value));
});

equal.addEventListener('click', getResult);

【问题讨论】:

标签: javascript


【解决方案1】:

你可以使用math.js

<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/9.3.0/math.js"></script>
<script>
  function getResult(){
    insertToDisplay(math.evaluate(DISPLAY.textContent));
  };
</script>

【讨论】:

  • 谢谢,很遗憾,我愿意,但它是 The Odin Project 的一个项目,我们被鼓励尝试使用 Vanilla javascript 找到解决方案
猜你喜欢
  • 2013-06-13
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-18
  • 2013-04-28
相关资源
最近更新 更多