계단을 오르듯이

JavaScript를 이용해 계산기 만들기 본문

배움과 개발 일지

JavaScript를 이용해 계산기 만들기

happyAyun 2021. 9. 5. 00:17
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
window.onload = function () {
  var calResult = 0// 총 연산의 결과값
  var oper = null// 연산자
  var calNum = ""// 첫 피연산자 이후의 모든 피연산자
  var flag = false// 첫 연산의 시작(첫 피연산자 입력됨의 여부)
 
  function makeNum(now) {
    // 피연산자 만들기
    if (!flag) flag = true// 첫번째 피연산자 만들 경우
    if (calNum == "0" && now == 0) {
      // 0의 연속된 숫자 방지 ex) 00000.7 => 0.7로 하기 위해
      calNum = 0;
      return;
    }
    calNum = calNum.concat(now); // **concat:문자열 합치기
  }
 
  function calcuration(nextOper) {
    // 계산하기
    if (!flag) return// 첫번째 연산자가 나올 경우 (피연산자가 없을 경우)
    if (!oper) {
      // 첫 연산자일 경우, 연산은 하지 않는다. (피연산자 부족)
      oper = nextOper;
      calResult = calNum; // 첫번째 피연산자를 연산 결과의 변수에 넣어주고
      calNum = ""// 다음 피연산자를 위해 초기화
      return;
    }
    if (oper == "=" || !calNum) {
      // 결과 도출 후 다시 그 결과값으로 연산을 이어갈 경우, 연산자를 변경할 경우
      oper = nextOper;
      return;
    }
 
    if (oper == "+") {
      // 실수 타입~!
      calResult = parseFloat(calResult) + parseFloat(calNum);
      // ** 타입을 바꿔줘야 하고!!!! 복합대입연선자 안됨!! **
    } else if (oper == "-") {
      calResult = parseFloat(calResult) - parseFloat(calNum);
    } else if (oper == "x") {
      calResult = parseFloat(calResult) * parseFloat(calNum);
    } else if (oper == "/") {
      calResult = parseFloat(calResult) / parseFloat(calNum);
    }
 
    calNum = ""// 연산 후 다음 피연산자를 위해 초기화
    oper = nextOper; // 현재의 연산자를 입력
  }
 
  function reset() {
    // C 버튼의 초기화
    calResult = 0;
    oper = null;
    start = "";
    calNum = "";
    flag = false;
  }
 
  // C 버튼
  document.getElementById("cancel").addEventListener("click"function () {
    reset();
    document.getElementById("show").innerText = calResult;
  });
 
  // 연산자
  document.getElementById("multi").addEventListener("click"function () {
    calcuration("*");
    document.getElementById("show").innerText = calResult;
  });
  document.getElementById("divi").addEventListener("click"function () {
    calcuration("/");
    document.getElementById("show").innerText = calResult;
  });
  document.getElementById("plus").addEventListener("click"function () {
    calcuration("+");
    document.getElementById("show").innerText = calResult;
  });
  document.getElementById("minus").addEventListener("click"function () {
    calcuration("-");
    document.getElementById("show").innerText = calResult;
  });
  document.getElementById("result").addEventListener("click"function () {
    calcuration("=");
    document.getElementById("show").innerText = calResult;
  });
 
  // 피연산자와 dot(.)
  document.getElementById("dot").addEventListener("click"function () {
    makeNum(".");
    document.getElementById("show").innerText = calNum;
  });
  document.getElementById("zero").addEventListener("click"function () {
    makeNum(0);
    document.getElementById("show").innerText = calNum;
  });
  document.getElementById("one").addEventListener("click"function () {
    makeNum(1);
    document.getElementById("show").innerText = calNum;
  });
  document.getElementById("two").addEventListener("click"function () {
    makeNum(2);
    document.getElementById("show").innerText = calNum;
  });
  document.getElementById("three").addEventListener("click"function () {
    makeNum(3);
    document.getElementById("show").innerText = calNum;
  });
  document.getElementById("four").addEventListener("click"function () {
    makeNum(4);
    document.getElementById("show").innerText = calNum;
  });
  document.getElementById("five").addEventListener("click"function () {
    makeNum(5);
    document.getElementById("show").innerText = calNum;
  });
  document.getElementById("six").addEventListener("click"function () {
    makeNum(6);
    document.getElementById("show").innerText = calNum;
  });
  document.getElementById("seven").addEventListener("click"function () {
    makeNum(7);
    document.getElementById("show").innerText = calNum;
  });
  document.getElementById("eight").addEventListener("click"function () {
    makeNum(8);
    document.getElementById("show").innerText = calNum;
  });
  document.getElementById("nine").addEventListener("click"function () {
    makeNum(9);
    document.getElementById("show").innerText = calNum;
  });
};
cs