Skip to content

Commit 3cef533

Browse files
committed
JavaScript final
1 parent 4794dd6 commit 3cef533

File tree

1 file changed

+109
-0
lines changed

1 file changed

+109
-0
lines changed

javascript/script.js

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
let buffer = '0'
2+
let runningTotal = 0
3+
let previousOperator = null
4+
5+
const screen = document.querySelector('.screen')
6+
7+
function buttonClick (value) {
8+
if (isNaN(parseInt(value)))
9+
handleSymbol(value)
10+
else
11+
handleNumber(value)
12+
13+
rerender()
14+
}
15+
16+
function handleNumber (number) {
17+
if (buffer === '0')
18+
buffer = number
19+
else
20+
buffer += number
21+
}
22+
23+
function handleSymbol (symbol) {
24+
switch (symbol) {
25+
case 'C' :
26+
handleClear()
27+
break
28+
case '=' :
29+
handleEquals()
30+
break
31+
case '←' :
32+
handleBackspace()
33+
break
34+
case '+' :
35+
case '-' :
36+
case '÷' :
37+
case '×' :
38+
handleMath(symbol)
39+
break
40+
}
41+
}
42+
43+
function handleClear() {
44+
buffer = '0'
45+
}
46+
47+
function handleEquals() {
48+
if (previousOperator === null)
49+
return // do nothing
50+
51+
flushOperation(parseInt(buffer))
52+
previousOperator = null
53+
54+
buffer = "" + runningTotal // maintain buffer as type string
55+
runningTotal = 0
56+
}
57+
58+
function handleBackspace() {
59+
if (buffer.length === 1)
60+
buffer = '0'
61+
else
62+
buffer = buffer.substring(0, buffer.length - 1)
63+
}
64+
65+
function handleMath(mathSymbol) {
66+
if (buffer === '0')
67+
return // do nothing
68+
69+
const intBuffer = parseInt(buffer)
70+
71+
if (runningTotal === 0)
72+
runningTotal = intBuffer
73+
else
74+
flushOperation(intBuffer)
75+
76+
previousOperator = mathSymbol
77+
buffer = '0'
78+
}
79+
80+
function flushOperation (intBuffer) {
81+
switch (previousOperator) {
82+
case '+' :
83+
runningTotal += intBuffer
84+
break
85+
case '-' :
86+
runningTotal -= intBuffer
87+
break
88+
case '÷' :
89+
runningTotal /= intBuffer
90+
break
91+
case '×' :
92+
runningTotal *= intBuffer
93+
break
94+
}
95+
}
96+
97+
function init () {
98+
document.querySelector('.calc-buttons')
99+
.addEventListener("click", function(event){
100+
buttonClick(event.target.innerText)
101+
})
102+
}
103+
104+
function rerender () {
105+
screen.innerText = buffer
106+
}
107+
108+
init()
109+

0 commit comments

Comments
 (0)