1+ < html >
2+ < head >
3+ < link rel ="stylesheet " type = "text/css " href ="style.css ">
4+ </ head >
5+
6+ < body >
7+ < h1 > HTML Calculator</ h1 >
8+ < div id ="calc-parent ">
9+ < div class ="row ">
10+ < div class ="column " id ="calc-display-val "> 0</ div >
11+
12+ </ div >
13+ < div class ="row ">
14+ < div class ="calc-btn column " id ="calc-clear "> AC</ div >
15+ < div class ="calc-btn column " id ="calc-backspace "> ⇤</ div >
16+ < div class ="calc-btn calc-btn-operator column " id ="calc-divide "> ÷</ div >
17+ </ div >
18+ < div class ="row ">
19+ < div class ="calc-btn calc-btn-num column " id ="calc-seven "> 7</ div >
20+ < div class ="calc-btn calc-btn-num column " id ="calc-eight "> 8</ div >
21+ < div class ="calc-btn calc-btn-num column " id ="calc-nine "> 9</ div >
22+ < div class ="calc-btn calc-btn-operator column " id ="calc-multiply "> x</ div >
23+
24+ </ div >
25+ < div class ="row ">
26+ < div class ="calc-btn calc-btn-num column " id ="calc-four "> 4</ div >
27+ < div class ="calc-btn calc-btn-num column " id ="calc-five "> 5</ div >
28+ < div class ="calc-btn calc-btn-num column " id ="calc-six "> 6</ div >
29+ < div class ="calc-btn calc-btn-operator column " id ="calc-minus "> -</ div >
30+ </ div >
31+ < div class ="row ">
32+ < div class ="calc-btn calc-btn-num column " id ="calc-one "> 1</ div >
33+ < div class ="calc-btn calc-btn-num column " id ="calc-two "> 2</ div >
34+ < div class ="calc-btn calc-btn-num column " id ="calc-three "> 3</ div >
35+ < div class ="calc-btn calc-btn-operator column " id ="calc-plus "> +</ div >
36+
37+ </ div >
38+ < div class ="row ">
39+ < div class ="calc-btn calc-btn-num column " id ="calc-zero "> 0</ div >
40+ < div class ="calc-btn column " id ="calc-decimal "> .</ div >
41+ < div class ="calc-btn calc-btn-operator column " id ="calc-equals "> =</ div >
42+ </ div >
43+ </ div >
44+
45+ < script >
46+ var oneBtn = document . getElementById ( 'calc-one' ) ;
47+ var twoBtn = document . getElementById ( 'calc-two' ) ;
48+ var threeBtn = document . getElementById ( 'calc-three' ) ;
49+ var fourBtn = document . getElementById ( 'calc-four' ) ;
50+ var fiveBtn = document . getElementById ( 'calc-five' ) ;
51+ var sixBtn = document . getElementById ( 'calc-six' ) ;
52+ var sevenBtn = document . getElementById ( 'calc-seven' ) ;
53+ var eightBtn = document . getElementById ( 'calc-eight' ) ;
54+ var nineBtn = document . getElementById ( 'calc-nine' ) ;
55+ var zeroBtn = document . getElementById ( 'calc-zero' ) ;
56+
57+ var decimalBtn = document . getElementById ( 'calc-decimal' ) ;
58+ var clearBtn = document . getElementById ( 'calc-clear' ) ;
59+ var backspaceBtn = document . getElementById ( 'calc-backspace' ) ;
60+ var displayValElement = document . getElementById ( 'calc-display-val' ) ;
61+
62+ var displayVal = '0' ;
63+ var pendingVal ;
64+ var evalStringArray = [ ] ;
65+
66+ var calcNumBtns = document . getElementsByClassName ( 'calc-btn-num' ) ;
67+ var calcOperatorBtns = document . getElementsByClassName ( 'calc-btn-operator' ) ;
68+
69+ var updateDisplayVal = ( clickObj ) => {
70+ var btnText = clickObj . target . innerText ;
71+
72+ if ( displayVal === '0' )
73+ displayVal = '' ;
74+
75+ displayVal += btnText ;
76+ displayValElement . innerText = displayVal ;
77+
78+ }
79+
80+ var performOperation = ( clickObj ) => {
81+ var operator = clickObj . target . innerText ;
82+
83+ switch ( operator ) {
84+ case '+' :
85+ pendingVal = displayVal ;
86+ displayVal = '0' ;
87+ displayValElement . innerText = displayVal ;
88+ evalStringArray . push ( pendingVal ) ;
89+ evalStringArray . push ( '+' ) ;
90+ break ;
91+
92+ case '-' :
93+ pendingVal = displayVal ;
94+ displayVal = '0' ;
95+ displayValElement . innerText = displayVal ;
96+ evalStringArray . push ( pendingVal ) ;
97+ evalStringArray . push ( '-' ) ;
98+ break ;
99+
100+ case 'x' :
101+ pendingVal = displayVal ;
102+ displayVal = '0' ;
103+ displayValElement . innerText = displayVal ;
104+ evalStringArray . push ( pendingVal ) ;
105+ evalStringArray . push ( '*' ) ;
106+ break
107+ case '÷' :
108+ pendingVal = displayVal ;
109+ displayVal = '0' ;
110+ displayValElement . innerText = displayVal ;
111+ evalStringArray . push ( pendingVal ) ;
112+ evalStringArray . push ( '/' ) ;
113+ break
114+ case '=' :
115+ evalStringArray . push ( displayVal ) ;
116+ var evaluation = eval ( evalStringArray . join ( ' ' ) ) ;
117+ displayVal = evaluation + '' ;
118+ displayValElement . innerText = displayVal ;
119+ evalStringArray = [ ] ;
120+ break ;
121+ default :
122+ break ;
123+ }
124+ }
125+
126+ for ( let i = 0 ; i < calcNumBtns . length ; i ++ ) {
127+ calcNumBtns [ i ] . addEventListener ( 'click' , updateDisplayVal , false ) ;
128+ }
129+ for ( let i = 0 ; i < calcOperatorBtns . length ; i ++ ) {
130+ calcOperatorBtns [ i ] . addEventListener ( 'click' , performOperation , false ) ;
131+ }
132+
133+ clearBtn . onclick = ( ) => {
134+ displayVal = '0' ;
135+ pendingVal = undefined ;
136+ evalStringArray = [ ] ;
137+ displayValElement . innerHTML = displayVal ;
138+ }
139+ backspaceBtn . onclick = ( ) => {
140+ let lengthOfDisplayVal = displayVal . length ;
141+ displayVal = displayVal . slice ( 0 , lengthOfDisplayVal - 1 ) ;
142+
143+ if ( displayVal === '' )
144+ displayVal = '0' ;
145+ displayValElement . innerText = displayVal ;
146+ }
147+ decimalBtn . onclick = ( ) => {
148+ if ( ! displayVal . includes ( '.' ) )
149+ displayVal += '.' ;
150+ displayValElement . innerText = displayVal ;
151+ }
152+
153+ </ script >
154+ </ body >
155+ </ html >
0 commit comments