@@ -3,60 +3,90 @@ let value = ""
3
3
let ans = 0
4
4
5
5
6
- function setInput ( ) {
7
- let input = document . getElementById ( "ans" ) ;
6
+ function setInput ( ) {
7
+ let input = document . getElementById ( "ans" ) ;
8
8
input . value = value
9
9
}
10
10
11
- window . onload = function ( ) {
11
+ window . onload = function ( ) {
12
12
setInput ( )
13
13
}
14
- function NumberButtonClick ( number ) {
15
14
16
- value += number
15
+ function NumberButtonClick ( number ) {
16
+ let lastChar = value [ value . length - 1 ] ;
17
17
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 ( )
19
27
}
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 ;
57
35
}
58
36
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 ] ;
59
42
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 ( )
61
91
62
92
}
0 commit comments