@@ -3,60 +3,90 @@ let value = ""
33let ans = 0
44
55
6- function setInput ( ) {
7- let input = document . getElementById ( "ans" ) ;
6+ function setInput ( ) {
7+ let input = document . getElementById ( "ans" ) ;
88 input . value = value
99}
1010
11- window . onload = function ( ) {
11+ window . onload = function ( ) {
1212 setInput ( )
1313}
14- function NumberButtonClick ( number ) {
1514
16- value += number
15+ function NumberButtonClick ( number ) {
16+ let lastChar = value [ value . length - 1 ] ;
1717
18- setInput ( )
18+ if ( lastChar === '/' && number === 0 ) {
19+ alert ( "Error: Division by zero is undefined." ) ;
20+ return null ;
21+ } else {
22+ value += number
23+ }
24+ 25+ 26+ setInput ( )
1927}
20- function functionButton ( Function ) {
21- 22- let input = document . getElementById ( "ans" ) ;
23- if ( input . value == "" || input . value == null ) { return ; }
24- switch ( Function ) {
25- case functionVar . add :
26- 27- value += "+" ;
28- break ;
29- case functionVar . substraction :
30- value += "-" ;
31- break ;
32- case functionVar . multiplication :
33- value += "x" ;
34- break ;
35- case functionVar . equal :
36- ans = eval ( value . replace ( "x" , "*" ) . replace ( "%" , "*1/100" ) . replace ( "^" , "**" ) ) ;
37- value = ans ;
38- break ;
39- case functionVar . division :
40- value += "/" ;
41- break ;
42- case functionVar . percentage :
43- value += "%" ;
44- break ;
45- case functionVar . power :
46- value += "^" ;
47- break ;
48- case functionVar . clear :
49- value = "" ;
50- break ;
51- case functionVar . backspace :
52- value = value . slice ( 0 , - 1 )
53- break ;
54- case functionVar . decimal :
55- value += "." ;
56- break ;
28+ 29+ function isOperator ( value ) {
30+ const operators = [ '+' , '-' , '.' , '^' , '%' , '/' , 'x' ] ;
31+ if ( operators . includes ( value ) ) {
32+ return true ;
33+ }
34+ return false ;
5735}
5836
37+ function functionButton ( Function ) {
38+ 39+ let input = document . getElementById ( "ans" ) ;
40+ if ( input . value == "" || input . value == null ) { return ; }
41+ let lastChar = value [ value . length - 1 ] ;
5942
60- setInput ( )
43+ if ( isOperator ( lastChar ) && Function !== '8' ) {
44+ return ;
45+ }
46+ 47+ 48+ switch ( Function ) {
49+ case functionVar . add :
50+ if ( lastChar !== "+" )
51+ value += "+" ;
52+ break ;
53+ case functionVar . substraction :
54+ if ( lastChar !== "-" )
55+ value += "-" ;
56+ break ;
57+ case functionVar . multiplication :
58+ if ( lastChar !== "x" )
59+ value += "x" ;
60+ break ;
61+ case functionVar . equal :
62+ ans = eval ( value . replace ( "x" , "*" ) . replace ( "%" , "*1/100" ) . replace ( "^" , "**" ) ) ;
63+ value = ans ;
64+ break ;
65+ case functionVar . division :
66+ if ( lastChar !== "/" )
67+ value += "/" ;
68+ break ;
69+ case functionVar . percentage :
70+ if ( lastChar !== "%" )
71+ value += "%" ;
72+ break ;
73+ case functionVar . power :
74+ if ( lastChar !== "^" )
75+ value += "^" ;
76+ break ;
77+ case functionVar . clear :
78+ value = "" ;
79+ break ;
80+ case functionVar . backspace :
81+ value = value . slice ( 0 , - 1 )
82+ break ;
83+ case functionVar . decimal :
84+ if ( lastChar !== "." && ! value . includes ( '.' ) )
85+ value += "." ;
86+ break ;
87+ }
88+ 89+ 90+ setInput ( )
6191
6292}
0 commit comments