-
Notifications
You must be signed in to change notification settings - Fork 1
/
calculator.js
81 lines (67 loc) · 2.06 KB
/
calculator.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
(function init() {
var el = function (param) {
if (param.charAt(0) === "#") {
return document.querySelector(param);
}
return document.querySelectorAll(param);
}
var viewer = el("#viewer"),
equals = el("#equals"),
deleteEl = el("#delete"),
clear = el("#clear"),
nums = el("[data-value]"),
ops = el("[data-operand]");
var result = 0,
numberPrevious = "",
numberCurrent = "",
operand = "";
var setNumber = function () {
numberCurrent += this.getAttribute('data-value');
viewer.setAttribute('value', numberCurrent)
}
for (var i = 0; i < nums.length; i++) {
nums[i].onclick = setNumber
}
var moveNumber = function () {
numberPrevious = numberCurrent;
numberCurrent = "";
operand = this.getAttribute("data-operand");
viewer.setAttribute('value', operand)
}
for (i = 0; i < ops.length; i++) {
ops[i].onclick = moveNumber
}
var display = function () {
numberPrevious = parseFloat(numberPrevious);
numberCurrent = parseFloat(numberCurrent);
switch (operand) {
case "+":
result = numberCurrent + numberPrevious;
break;
case "-":
result = numberCurrent - numberPrevious;
break;
case "x":
result = numberCurrent * numberPrevious;
break;
case "/":
result = numberCurrent / numberPrevious;
break;
default:
result = numberPrevious;
break;
}
viewer.setAttribute('value', result)
}
equals.onclick = display;
deleteEl.onclick = function () {
numberCurrent = numberCurrent.slice(0, -1);
viewer.setAttribute('value', numberCurrent || 0);
}
clear.onclick = function () {
result = 0;
numberPrevious = "";
numberCurrent = "";
viewer.setAttribute('value', result)
}
})()