0

The numbers are displaying on the screen. Now how might I create a 'getResult' function that works when you click the equal button to actually return the result from each equation from my operate() function? Right now, when you click the equal sign the last number remains on the display screen and nothing happens.

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);

1 Answers1

0

You can use math.js library

<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/9.3.0/math.js"></script>
<script>
  function getResult(){
    insertToDisplay(math.evaluate(DISPLAY.textContent));
  };
</script>
Fakt309
  • 821
  • 5
  • 14
  • thank you, unfortunately I would but its a project for The Odin Project and we're encouraged to try and find a solution with Vanilla javascript – toocoolforschool97 Apr 03 '21 at 23:44