본문 바로가기
[2020]KIC 캠퍼스 복습/JAVA SCRIPT(5,6,7)

[코드리뷰] JS) 웹으로 계산기 만들기

by 두블두블 2020. 8. 13.

 

자바스크립트의 연산기능과 정규표현식으로 입력되는 데이터들을 제한하는 방법에 대해 알아보자 

 

계산기 만들기 
카페 파이썬 54 :  문제 : 미니계산기-GUI, DB-연동, Django

조건)

Alert : 0으로는 나눌 수 없어 
Err는 다 alert 로 표시
초기화 : 다 지우고 +로 포커스 

 

 


학습목표

1. 웹을 구현할 수 있다. 

2. 정규표현식을 써보자 


<코드 1 : calculator>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>미니 계산기</title>
<script type="text/javascript">
window.onload = function() {
	document.getElementById("btnC").onclick = calc;
	document.getElementById("btnA").onclick = cls;
}

function calc() {
	var num1=document.getElementById("num1").value;
	var num2=document.getElementById("num2").value;
	
	if(num1==="" || isNaN(num1)===true){
		alert("숫자값만을 허용합니다.");
		document.getElementById("num1").value="";
		document.getElementById("result").innerText="결과 : "
		frm.num1.focus();
		return;
	}
	
	/*
	if(num2==="" || isNaN(num2)===true){
		alert("숫자값만을 허용합니다.");
		document.getElementById("num2").value="";
		document.getElementById("result").innerText="결과 : "
		frm.num2.focus();
		return;
	}
	*/
	
	//정규표현식 사용
	var regExp = /^-?[0-9]+(\.[0-9])?$/; //'-'로 시작할 수도 있고 '.숫자'로 끝날 수도 있다.
	if(num2==="" || !num2.match(regExp)){
		alert("숫자값만을 허용합니다.");
		document.getElementById("num2").value="";
		document.getElementById("result").innerText="결과 : "
		frm.num2.focus();
		return;
	}
	
	num1 = Number(num1);
	num2 = Number(num2);
	var result;
	
	if(document.getElementsByName("cal")[0].checked===true){
		result=num1+num2;
	} else if(document.getElementsByName("cal")[1].checked===true){
		result=num1-num2;
	} else if(document.getElementsByName("cal")[2].checked===true){
		result=num1*num2;
	} else if(document.getElementsByName("cal")[3].checked===true){
		if(num2===0){
			alert("나누기 0은 불가능한 연산입니다.");
			frm.num2.focus();
			return;
		}else{
			result=num1/num2;		
		}
	}else{
		alert("계산방법을 선택해 주십시오.");
	}
	document.getElementById("result").innerText="결과 : " + result;
}

function cls() {
	document.getElementById("frm").reset();
	frm.num1.focus();
	document.getElementById("result").innerText="결과 : "
}
</script>
</head>
<body>
<h3>미니 계산기</h3><br>
<form id="frm">
숫자1 : <input type="text" id="num1"><br>
숫자2 : <input type="text" id="num2"><br>
연산선택 : 
<input type="radio" name="cal" value="plus">+
<input type="radio" name="cal" value="minus">-
<input type="radio" name="cal" value="mul">*
<input type="radio" name="cal" value="div">/<br>
<span id="result">결과 : </span>
<br>
<input type="button" id="btnC" value="계산">
<input type="button" id="btnA" value="초기화">
</form>
</body>
</html>

결과화면

 

+에 고정하는거 안해놓음. 숫자 2의 크기가 작음