-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
127 lines (120 loc) · 3.34 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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
const displayHistory = document.querySelector(".display-history");
const display = document.querySelector(".display-input");
const tempResult = document.querySelector(".temp-result");
const numbers = document.querySelectorAll(".number");
const operation = document.querySelectorAll(".operation");
const equal = document.querySelector(".equal");
const clearAll = document.querySelector(".all-clear");
const clearLast = document.querySelector(".last-entity-clear");
let dis1Num = "";
let dis2Num = "";
let result = null;
let lastOperation = "";
let haveDot = false;
numbers.forEach((number) => {
number.addEventListener("click", (e) => {
if (e.target.innerText === "." && !haveDot) {
haveDot = true;
} else if (e.target.innerText === "." && haveDot) {
return;
}
dis2Num += e.target.innerText;
display.innerText = dis2Num;
});
});
operation.forEach((operation) => {
operation.addEventListener("click", (e) => {
if (!dis2Num) return;
haveDot = false;
const operationName = e.target.innerText;
if (dis1Num && dis2Num && lastOperation) {
mathOperation();
} else {
result = parseFloat(dis2Num);
}
clearVar(operationName);
lastOperation = operationName;
});
});
function clearVar(name = "") {
dis1Num += dis2Num + " " + name + " ";
displayHistory.innerText = dis1Num;
display.innerText = "";
dis2Num = "";
tempResult.innerText = result;
}
function mathOperation() {
if (lastOperation === "x") {
result = parseFloat(result) * parseFloat(dis2Num);
} else if (lastOperation === "+") {
result = parseFloat(result) + parseFloat(dis2Num);
} else if (lastOperation === "-") {
result = parseFloat(result) - parseFloat(dis2Num);
} else if (lastOperation === "/") {
result = parseFloat(result) / parseFloat(dis2Num);
} else if (lastOperation === "%") {
result = parseFloat(result) % parseFloat(dis2Num);
}
}
equal.addEventListener("click", () => {
if (!dis2Num || !dis1Num) return;
haveDot = false;
mathOperation();
clearVar();
display.innerText = result;
tempResult.innerText = "";
dis2Num = result;
dis1Num = "";
});
clearAll.addEventListener("click", () => {
dis1Num = "";
dis2Num = "";
displayHistory.innerText = "";
display.innerText = "";
result = "";
tempResult.innerText = "";
});
clearLast.addEventListener("click", () => {
display.innerText = "";
dis2Num = "";
});
window.addEventListener("keydown", (e) => {
if (
e.key === "0" ||
e.key === "1" ||
e.key === "2" ||
e.key === "3" ||
e.key === "4" ||
e.key === "5" ||
e.key === "6" ||
e.key === "7" ||
e.key === "8" ||
e.key === "9" ||
e.key === "."
) {
clickButton(e.key);
} else if (e.key === "+" || e.key === "-" || e.key === "/" || e.key === "%") {
clickOperation(e.key);
} else if (e.key === "*") {
clickOperation("x");
} else if (e.key == "Enter" || e.key === "=") {
clickEqual();
}
});
function clickButton(key) {
numbers.forEach((button) => {
if (button.innerText === key) {
button.click();
}
});
}
function clickOperation(key) {
operation.forEach((operation) => {
if (operation.innerText === key) {
operation.click();
}
});
}
function clickEqual() {
equal.click();
}