Advertisement
Todorov_Stanimir

04. Numpad Calculator Exercise: DOM

Oct 5th, 2019
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     let buttons = document.getElementsByTagName('button');
  3.     let operator = '';
  4.     let result = 0;
  5.     for (let i = 0; i < buttons.length; i++) {
  6.         buttons[i].addEventListener('click', () => {
  7.             if (buttons[i].value !== '=') {
  8.                 if (buttons[i].value === '+' || buttons[i].value === '-' ||
  9.                     buttons[i].value === '*' || buttons[i].value === '/') {
  10.                     operator = ` ${String(buttons[i].value)} `;
  11.                     document.getElementById('expressionOutput').textContent += operator;
  12.                 } else if (buttons[i].value === 'Clear') {
  13.                     document.getElementById('expressionOutput').textContent = '';
  14.                     document.getElementById('resultOutput').textContent = '';
  15.                 } else {
  16.                     document.getElementById('expressionOutput').textContent += String(buttons[i].value);
  17.                 }
  18.             } else {
  19.                 let [operand1, operand2] = document.getElementById('expressionOutput').textContent.split(operator).map(Number);
  20.                 if (operand1 && operand2) {
  21.                     if (operator === ' + ') { result = operand1 + operand2 }
  22.                     if (operator === ' - ') { result = operand1 - operand2 }
  23.                     if (operator === ' * ') { result = operand1 * operand2 }
  24.                     if (operator === ' / ') { result = operand1 / operand2 }
  25.                     document.getElementById('resultOutput').textContent = result;
  26.                 } else {
  27.                     document.getElementById('resultOutput').textContent = NaN;
  28.                 }
  29.             }
  30.         });
  31.     }
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement