-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
146 lines (132 loc) · 5.06 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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
// Declares variables for all of the buttons in the calculator
const result = document.getElementById("result")
const plus = document.getElementById("+")
const minus = document.getElementById("-")
const mult = document.getElementById("x")
const divide = document.getElementById("/")
const exponent = document.getElementById("^")
const equals = document.getElementById("=")
const clear = document.getElementById("C")
const allClear = document.getElementById("AC")
const answer = document.getElementById("Ans")
const history = document.getElementById("history")
let numberButtons = []
for (let i = 0; i <= 9; i++) {
numberButtons[i] = document.getElementById(String(i));
}
console.log(numberButtons)
// Adding click event listeners to all of the number buttons
for (let i = 0; i <= 9; i++) {
numberButtons[i].addEventListener("click", () => {
if (result.textContent === "0"){
result.textContent = numberButtons[i].textContent
// console.log(result.textContent)
} else {
result.textContent += numberButtons[i].textContent
// console.log(result.textContent)
}
})
}
// Adding click event listeners to the operator buttons
let operator = ""
mult.addEventListener("click", () => {
if (operator != "") {
result.textContent = evaluate() + " × "
operator = "*"
} else if (result.textContent != "0" && !(result.textContent.endsWith("+") || result.textContent.endsWith("-") || result.textContent.endsWith("×") || result.textContent.endsWith("÷"))) {
result.textContent += " × "
operator = "*"
}
})
divide.addEventListener("click", () => {
if (operator != "") {
result.textContent = evaluate() + " ÷ "
operator = "/"
} else if (result.textContent != "0" && !(result.textContent.endsWith("+") || result.textContent.endsWith("-") || result.textContent.endsWith("×") || result.textContent.endsWith("÷"))) {
result.textContent += " ÷ "
operator = "/"
}
})
plus.addEventListener("click", () => {
if (operator != "") {
result.textContent = evaluate() + " + "
operator = "+"
} else if (result.textContent != "0" && !(result.textContent.endsWith("+") || result.textContent.endsWith("-") || result.textContent.endsWith("×") || result.textContent.endsWith("÷"))) {
result.textContent += " + "
operator = "+"
}
})
minus.addEventListener("click", () => {
if (operator != "") {
result.textContent = evaluate() + " - "
operator = "-"
} else if (result.textContent != "0" && !(result.textContent.endsWith("+") || result.textContent.endsWith("-") || result.textContent.endsWith("×") || result.textContent.endsWith("÷"))) {
result.textContent += " - "
operator = "-"
}
})
exponent.addEventListener("click", () => {
if (operator != "") {
result.textContent = evaluate() + " ^ "
operator = "^"
} else if (result.textContent != "0" && !(result.textContent.endsWith("+") || result.textContent.endsWith("-") || result.textContent.endsWith("×") || result.textContent.endsWith("÷"))) {
result.textContent += " ^ "
operator = "^"
}
})
// Adding click event lsiteners to the clear button
clear.addEventListener("click", () => {
let newResult = result.textContent.split(" ")
newResult.pop()
result.textContent = newResult.toString().replaceAll(",", " ")
})
allClear.addEventListener("click", () => {
result.textContent = "0"
operator = ""
})
// Adding event listener to the answer button
let answerNum = undefined;
answer.addEventListener("click", () => {
if (answerNum === undefined) {
alert("No previous answer")
} else {
result.textContent += answerNum
}
})
// Adding click event listener to the equals button
equals.addEventListener("click", () => {
const equation = result.textContent.split(" ")
if (equation.length == 3) {
result.textContent = evaluate()
operator = ""
}
})
function evaluate() {
const equation = result.textContent.split(" ")
const operand1 = Number(equation[0])
const operand2 = Number(equation[2])
switch (operator) {
case "+":
answerNum = operand1 + operand2
history.innerHTML += ("<p>" + result.innerText + " = " + answerNum + "</p>")
return answerNum
case "-":
answerNum = operand1 - operand2
history.innerHTML += ("<p>" + result.innerText + " = " + answerNum + "</p>")
return answerNum
case "*":
answerNum = operand1 * operand2
history.innerHTML += ("<p>" + result.innerText + " = " + answerNum + "</p>")
return answerNum
case "/":
answerNum = operand1 / operand2
history.innerHTML += ("<p>" + result.innerText + " = " + answerNum + "</p>")
return answerNum
case "^":
answerNum = operand1 ** operand2
history.innerHTML += ("<p>" + result.innerText + " = " + answerNum + "</p>")
return answerNum
default:
return
}
}