Skip to content

Commit 10762eb

Browse files
edit calc.js
1 parent 5372079 commit 10762eb

File tree

2 files changed

+104
-86
lines changed

2 files changed

+104
-86
lines changed

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"liveServer.settings.port": 5501
3+
}

calc.js

Lines changed: 101 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,110 +1,125 @@
11
console.log(
2-
"Javascript Calculator Made by Harsh Trivedi\nhttps://harsh98trivedi.github.io"
2+
"Javascript Calculator Made by Harsh Trivedi\nhttps://harsh98trivedi.github.io"
33
);
4+
let flag = 0;
5+
function isNumber(char) {
6+
return /^\d$/.test(char);
7+
}
48

59
document.getElementById("answer").readOnly = true; //set this attribute in Html file
610
let screen = document.getElementById("answer");
711
buttons = document.querySelectorAll("button");
812
let screenValue = "";
9-
let maxItems = 6;
10-
1113
for (item of buttons) {
12-
item.addEventListener("click", (e) => {
13-
buttonText = e.target.innerText;
14-
if (buttonText == "X") {
15-
buttonText = "*";
16-
screenValue += buttonText;
17-
screen.value = screenValue;
18-
} else if (buttonText == "C") {
19-
screenValue = "";
20-
screen.value = screenValue;
21-
} else if (buttonText == "=") {
22-
checkForBracketMulti(); // automatically evaluates if no brackets
23-
} else {
24-
screenValue += buttonText;
25-
screen.value = screenValue;
26-
}
27-
});
14+
item.addEventListener("click", (e) => {
15+
buttonText = e.target.innerText;
16+
if (buttonText == "X") {
17+
if (flag == 1) {
18+
flag = 0;
19+
}
20+
buttonText = "*";
21+
screenValue += buttonText;
22+
screen.value = screenValue;
23+
} else if (buttonText == "C") {
24+
if (flag == 1) {
25+
flag = 0;
26+
}
27+
screenValue = "";
28+
screen.value = screenValue;
29+
} else if (buttonText == "=") {
30+
checkForBracketMulti(); // automatically evaluates if no brackets
31+
//
32+
} else if (isNumber(buttonText)) {
33+
if (flag == 1) {
34+
screenValue = buttonText;
35+
flag = 0;
36+
} else {
37+
screenValue += buttonText;
38+
}
39+
screen.value = screenValue;
40+
console.log("im an operator");
41+
} else {
42+
if (flag == 1) {
43+
flag = 0;
44+
}
45+
screenValue = screen.value + buttonText;
46+
screen.value = screenValue;
47+
}
48+
});
2849
}
2950

3051
document.addEventListener("keydown", function (event) {
31-
32-
if (event.shiftKey == 57) {
33-
event.key = "(";
34-
} else if (event.shiftKey == 48) {
35-
event.key = ")";
36-
} else if (event.shiftKey == 53) {
37-
event.key = "%";
38-
}
39-
if (event.keyCode == 88) {
40-
screenValue += "*";
41-
screen.value = screenValue;
42-
}
43-
if (
44-
event.key <= 9 ||
45-
event.key == "+" ||
46-
event.key == "-" ||
47-
event.key == "*" ||
48-
event.key == "." ||
49-
event.key == "/" ||
50-
event.key == "%" ||
51-
event.key == "(" ||
52-
event.key == ")"
53-
) {
54-
screenValue += event.key;
55-
screen.value = screenValue;
56-
}
57-
if (event.keyCode == 13 || event.keyCode == 187) {
58-
checkForBracketMulti(); // automatically evaluates if no brackets
59-
} else if (event.keyCode == 46) {
60-
screenValue = "";
61-
screen.value = screenValue;
62-
console.clear();
63-
} else if (event.keyCode == 8) {
64-
screenValue = screenValue.slice(0, -1);
65-
screen.value = screenValue;
66-
} else if (event.keyCode == 67) {
67-
screenValue = "";
68-
screen.value = screenValue;
69-
console.clear();
70-
} else if (event.keyCode == 82) {
71-
location.reload();
72-
}
73-
});
74-
75-
window.onerror = function () {
76-
alert("PLEASE INPUT VALID EXPRESSION");
52+
if (event.shiftKey == 57) {
53+
event.key = "(";
54+
} else if (event.shiftKey == 48) {
55+
event.key = ")";
56+
} else if (event.shiftKey == 53) {
57+
event.key = "%";
58+
}
59+
if (event.keyCode == 88) {
60+
screenValue += "*";
61+
screen.value = screenValue;
62+
}
63+
if (
64+
event.key <= 9 ||
65+
event.key == "+" ||
66+
event.key == "-" ||
67+
event.key == "*" ||
68+
event.key == "." ||
69+
event.key == "/" ||
70+
event.key == "%" ||
71+
event.key == "(" ||
72+
event.key == ")"
73+
) {
74+
screenValue += event.key;
75+
screen.value = screenValue;
76+
}
77+
if (event.keyCode == 13 || event.keyCode == 187) {
78+
checkForBracketMulti(); // automatically evaluates if no brackets
79+
} else if (event.keyCode == 46) {
80+
screenValue = "";
81+
screen.value = screenValue;
82+
console.clear();
83+
} else if (event.keyCode == 8) {
84+
screenValue = screenValue.slice(0, -1);
85+
screen.value = screenValue;
86+
} else if (event.keyCode == 67) {
7787
screenValue = "";
7888
screen.value = screenValue;
7989
console.clear();
90+
} else if (event.keyCode == 82) {
91+
location.reload();
92+
}
93+
});
94+
95+
window.onerror = function () {
96+
alert("PLEASE INPUT VALID EXPRESSION");
97+
screenValue = "";
98+
screen.value = screenValue;
99+
console.clear();
80100
};
81101

82102
window.onBracketMultiplication = function () {
83-
screenValue = addStr(screen.value, screen.value.indexOf("("), "*");
84-
screen.value = eval(screenValue);
103+
screenValue = addStr(screen.value, screen.value.indexOf("("), "*");
104+
screen.value = eval(screenValue);
85105
};
86106

87107
function addStr(str, index, stringToAdd) {
88-
return (
89-
str.substring(0, index) + stringToAdd + str.substring(index, str.length)
90-
);
108+
return (
109+
str.substring(0, index) + stringToAdd + str.substring(index, str.length)
110+
);
91111
}
92112

93113
function checkForBracketMulti() {
94-
// Check if there's a number directly infront of a bracket
95-
if (
96-
screen.value.includes("(") &&
97-
!isNaN(screen.value.charAt(screen.value.indexOf("(") - 1))
98-
) {
99-
window.onBracketMultiplication();
100-
return;
101-
} else {
102-
screen.value = eval(screenValue);
103-
let calcHistory = JSON.parse(localStorage.getItem("calcHistory")) || [];
104-
if(calcHistory.length >= maxItems){
105-
calcHistory.shift();
106-
}
107-
calcHistory.push({screenValue, result : screen.value});
108-
localStorage.setItem("calcHistory", JSON.stringify(calcHistory));
109-
}
114+
// Check if there's a number directly infront of a bracket
115+
if (
116+
screen.value.includes("(") &&
117+
!isNaN(screen.value.charAt(screen.value.indexOf("(") - 1))
118+
) {
119+
window.onBracketMultiplication();
120+
return;
121+
} else {
122+
screen.value = eval(screenValue);
123+
}
124+
flag = 1;
110125
}

0 commit comments

Comments
 (0)