@@ -10,15 +10,18 @@ document.getElementById("answer").readOnly = true; //set this attribute in Html
1010let screen = document . getElementById ( "answer" ) ;
1111buttons = document . querySelectorAll ( "button" ) ;
1212let screenValue = "" ;
13+ let lastScreenValue = "" ;
1314let maxItems = 6 ;
15+ let isSign = true ;
1416for ( item of buttons ) {
1517 item . addEventListener ( "click" , ( e ) => {
1618 buttonText = e . target . innerText ;
17- if ( buttonText == "X" ) {
19+ if ( buttonText == "X" && ! isSign ) {
1820 if ( flag == 1 ) {
1921 flag = 0 ;
2022 }
2123 buttonText = "*" ;
24+ isSign = true ;
2225 screenValue += buttonText ;
2326 screen . value = screenValue ;
2427 } else if ( buttonText == "C" ) {
@@ -27,6 +30,7 @@ for (item of buttons) {
2730 }
2831 screenValue = "" ;
2932 screen . value = screenValue ;
33+ isSign = true ;
3034 } else if ( buttonText == "=" ) {
3135 checkForBracketMulti ( ) ; // automatically evaluates if no brackets
3236 //
@@ -38,42 +42,39 @@ for (item of buttons) {
3842 screenValue += buttonText ;
3943 }
4044 screen . value = screenValue ;
41- console . log ( "im an operator" ) ;
45+ isSign = false ;
4246 } else {
4347 if ( flag == 1 ) {
4448 flag = 0 ;
4549 }
46- screenValue = screen . value + buttonText ;
47- screen . value = screenValue ;
50+ if ( ! isSign ) {
51+ screenValue = screen . value + buttonText ;
52+ screen . value = screenValue ;
53+ isSign = true ;
54+ }
4855 }
4956 } ) ;
5057}
5158
5259document . addEventListener ( "keydown" , function ( event ) {
53- if ( event . shiftKey == 57 ) {
54- event . key = "(" ;
55- } else if ( event . shiftKey == 48 ) {
56- event . key = ")" ;
57- } else if ( event . shiftKey == 53 ) {
58- event . key = "%" ;
59- }
60- if ( event . keyCode == 88 ) {
61- screenValue += "*" ;
62- screen . value = screenValue ;
63- }
6460 if (
65- event . key <= 9 ||
66- event . key == "+" ||
67- event . key == "-" ||
68- event . key == "*" ||
69- event . key == "." ||
70- event . key == "/" ||
71- event . key == "%" ||
72- event . key == "(" ||
73- event . key == ")"
61+ event . key <= 9
7462 ) {
7563 screenValue += event . key ;
7664 screen . value = screenValue ;
65+ isSign = false ;
66+ }
67+ if ( ! isSign && ( event . key == "+" ||
68+ event . key == "-" ||
69+ event . key == "*" ||
70+ event . key == "." ||
71+ event . key == "/" ||
72+ event . key == "%" ||
73+ event . key == "(" ||
74+ event . key == ")" ) ) {
75+ screenValue += event . key ;
76+ screen . value = screenValue ;
77+ isSign = true ;
7778 }
7879 if ( event . key == "Enter" || event . key == "=" ) {
7980 event . preventDefault ( ) ;
@@ -120,20 +121,26 @@ function addStr(str, index, stringToAdd) {
120121
121122function checkForBracketMulti ( ) {
122123 // Check if there's a number directly infront of a bracket
124+ isSign = false ;
123125 if (
124126 screen . value . includes ( "(" ) &&
125127 ! isNaN ( screen . value . charAt ( screen . value . indexOf ( "(" ) - 1 ) )
126128 ) {
127129 window . onBracketMultiplication ( ) ;
128130 return ;
129131 } else {
130- screen . value = eval ( screenValue ) ;
131- let calcHistory = JSON . parse ( localStorage . getItem ( "calcHistory" ) ) || [ ] ;
132- if ( calcHistory . length >= maxItems ) {
133- calcHistory . shift ( ) ;
132+ if ( eval ( screenValue ) !== undefined )
133+ {
134+ screen . value = eval ( screenValue ) ;
135+ lastScreenValue = screenValue ;
136+ screenValue = screen . value ;
137+ let calcHistory = JSON . parse ( localStorage . getItem ( "calcHistory" ) ) || [ ] ;
138+ if ( calcHistory . length >= maxItems ) {
139+ calcHistory . shift ( ) ;
140+ }
141+ calcHistory . push ( { lastScreenValue, result : screen . value } ) ;
142+ localStorage . setItem ( "calcHistory" , JSON . stringify ( calcHistory ) ) ;
134143 }
135- calcHistory . push ( { screenValue, result : screen . value } ) ;
136- localStorage . setItem ( "calcHistory" , JSON . stringify ( calcHistory ) ) ;
137144 }
138145 flag = 1 ;
139146}
0 commit comments