-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
105 lines (101 loc) · 2.04 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
function add(a, b) {
return a + b;
}
function subtract(a, b) {
return a - b;
}
function multiply(a, b) {
return a * b;
}
function divide(a, b) {
return a / b;
}
function clearDisplay() {
display.value = '';
}
function displayResult(result) {
display.value = result;
}
function resetVariables() {
num1 = '';
num2 = '';
operator = '';
prevNum = '';
result = 0;
}
function operate(operator, a, b) {
switch (operator) {
case '+':
return add(a, b);
case '-':
return subtract(a, b);
case '*':
return multiply(a, b);
case '/':
if (b == 0) {
alert('Division by 0!');
return 'error';
}else{
return divide(a, b);
}
}
}
const buttons = document.querySelectorAll('.buttons input');
const display = document.querySelector('.display input');
let prevNum = '';
let num1 = '';
let num2 = '';
let operator = '';
let result = 0;
buttons.forEach(button => {
button.addEventListener('click', function() {
switch (button.value) {
case 'AC':
resetVariables();
clearDisplay();
break;
case 'DE':
clearDisplay();
break;
case '+':
num1 = display.value;
operator = '+';
clearDisplay();
break;
case '-':
num1 = display.value;
operator = '-';
clearDisplay();
break;
case '*':
num1 = display.value;
operator = '*';
clearDisplay();
break;
case '/':
num1 = display.value;
operator = '/';
clearDisplay();
break;
case '=':
if (prevNum === '') {
num2 = display.value;
} else {
num2 = prevNum;
}
result = operate(operator, parseFloat(num1), parseFloat(num2));
if (result != 'error') {
displayResult(result);
num1 = result
prevNum = num2;
}else {
resetVariables();
clearDisplay();
}
break;
default:
display.value += button.value;
break;
}
});
});