Javascript
Javascript - Calculator
HiroDaegu
2021. 9. 19. 22:19
728x90
SMALL

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Calculator</title>
<link rel="stylesheet" href="style.css" />
<script defer src="main.js"></script>
</head>
<body>
<form name="cal">
<table>
<caption>
계산기
</caption>
<tr>
<th colspan="4"><input type="text" name="result" value="0" /></th>
</tr>
<tr>
<td><input type="button" value="7" /></td>
<td><input type="button" value="8" /></td>
<td><input type="button" value="9" /></td>
<td><input type="button" value="+" /></td>
</tr>
<tr>
<td><input type="button" value="4" /></td>
<td><input type="button" value="5" /></td>
<td><input type="button" value="6" /></td>
<td><input type="button" value="-" /></td>
</tr>
<tr>
<td><input type="button" value="1" /></td>
<td><input type="button" value="2" /></td>
<td><input type="button" value="3" /></td>
<td><input type="button" value="*" /></td>
</tr>
<tr>
<td colspan="2"><input type="button" value="0" /></td>
<td><input type="button" value="%" /></td>
<td><input type="button" value="/" /></td>
</tr>
<tr>
<td colspan="2">
<input type="button" class="cls_btn" value="clear" />
</td>
<td colspan="2">
<input type="button" class="result_btn" value="=" />
</td>
</tr>
</table>
</form>
</body>
</html>
caption {
font-size: 32px;
margin: 20px;
}
table {
width: 320px;
text-align: center;
margin: 10px auto;
}
table, th {
background: #333;
}
th {
padding-right: 10px;
height: 80px;
}
td {
height: 75px;
text-align: center;
}
th > input {
width: 100%;
border: none;
background: #333; color: #fff;
text-align: right;
font-size: 48px;
}
td > input[type = "button"] {
width: 100%;
height: inherit;
color: #333;
font-size: 36px;
border: none;
}
td > input[type = "button"]:hover {
background: #999;
}
td:last-child > input {
background: #ffa500;
color: #fff;
}
const inp = document.forms["cal"];
const input = inp.getElementsByTagName("input");
const cls_btn = document.getElementsByClassName("cls_btn")[0];
const result_btn = document.getElementsByClassName("result_btn");
// 계산기 초기화
function clear() {
inp["result"].value = "";
}
// 계산기 입력 처리 함수
function calculate(value) {
// 값이 입력될 경우 0 제거
if(inp["result"].value == 0) {
inp["result"].value = "";
}
// 입력 받은 값을 결과창에 출력
inp["result"].value += value;
}
// 계산 결과 처리 함수
function my_result() {
let result = document.forms["cal"]["result"];
let calc = eval(result.value); // eval() -> 입력값을 코드로 인식하게 하는 함수
// 결과창에 표시
inp["result"].value = calc;
}
// 숫자 및 사칙연산 버튼
for(let i = 0 ; i < input.length ; i++) {
// 숫자와 사직 연산자만 입력 처리
if(input[i].value != "=" && input[i].value != "clear") {
input[i].onclick = function() {
calculate(this.value);
}
}
}
// 초기화 버튼
cls_btn.onclick = function() {
clear();
}
// 결과 버튼
result_btn.onclick = function() {
try{
my_result();
}
catch(err) {
let result = inp["result"];
result.value = "입력 오류";
}
}728x90
LIST