Dwitio

kalkulator.js

Jan 25th, 2022
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const calculator = {
  2.     displayNumber: '0',
  3.     operator: null,
  4.     firstNumber: null,
  5.     waitingForSecondNumber: false
  6. };
  7.  
  8. function updateDisplay() {
  9.     document.querySelector("#displayNumber").innerText= calculator.displayNumber;
  10. }
  11.  
  12. function clearCalculator() {
  13.     calculator.displayNumber = '0';
  14.     calculator.operator = null;
  15.     calculator.firstNumber = null;
  16.     calculator.waitingForSecondNumber = false;
  17. }
  18.  
  19. function inputDigit(digit) {
  20.     if (calculator.displayNumber === '0') {
  21.         calculator.displayNumber = digit;
  22.     } else {
  23.         calculator.displayNumber += digit;
  24.     }
  25. }
  26.  
  27. function inverseNumber() {
  28.     if (calculator.displayNumber === '0') {
  29.         return;
  30.     }
  31.     calculator.displayNumber = calculator.displayNumber * -1;
  32. }
  33.  
  34. function handleOperator(operator) {
  35.     if (!calculator.waitingForSecondNumber) {
  36.         calculator.operator = operator;
  37.         calculator.waitingForSecondNumber = true;
  38.         calculator.firstNumber = calculator.displayNumber;
  39.  
  40.         //reset display supaya tombol selanjutnya dimulai dari angka pertama lagi
  41.         calculator.displayNumber = '0';
  42.     } else {
  43.         alert('Operator sudah ditetapkan')
  44.     }
  45. }
  46.  
  47. function performCalculation() {
  48.     if (calculator.firstNumber == null || calculator.operator == null) {
  49.         alert("Anda belum menetapkan operator");
  50.         return;
  51.     }
  52.  
  53.     let result = 0;
  54.     if (calculator.operator === "+") {
  55.         result = parseInt(calculator.firstNumber) + parseInt(calculator.displayNumber);
  56.     } else {
  57.         result = parseInt(calculator.firstNumber) - parseInt(calculator.displayNumber);
  58.     }
  59.  
  60.  
  61.     // objek yang akan dikirimkan sebagai argumen fungsi putHistory()
  62.     const history = {
  63.         firstNumber: calculator.firstNumber,
  64.         secondNumber: calculator.displayNumber,
  65.         operator: calculator.operator,
  66.         result: result
  67.     }
  68.     putHistory(history);
  69.     calculator.displayNumber = result;
  70.     renderHistory();
  71. }
  72.  
  73. const buttons = document.querySelectorAll(".button");
  74. for (let button of buttons) {
  75.     button.addEventListener('click', function(event) {
  76.  
  77.         //dapetin objek elemen yang diklik
  78.         const target = event.target;
  79.  
  80.         if(target.classList.contains('clear')) {
  81.             clearCalculator();
  82.             updateDisplay();
  83.             return;
  84.         }
  85.  
  86.         if (target.classList.contains('negative')) {
  87.             inverseNumber();
  88.             updateDisplay();
  89.             return;
  90.         }
  91.  
  92.         if (target.classList.contains('equals')) {
  93.             performCalculation();
  94.             updateDisplay();
  95.             return;
  96.         }
  97.  
  98.         if (target.classList.contains('operator')) {
  99.             handleOperator(target.innerText);
  100.             return;
  101.         }
  102.  
  103.         inputDigit(target.innerText);
  104.         updateDisplay()
  105.     });
  106. }
Add Comment
Please, Sign In to add comment