개발자 미니민의 개발스터디

[javascript] 조건문 (+querySelector, getElementById)

by mini_min
[javascript] 조건문 

✔️ 조건문

: 특정 조건이 참인 경우에 실행하는 명령의 집합이다.

: 두 가지 조건문을 지원하다.

 

📓 거짓으로 취급하는 값

false, undefined, null, 0, NaN, 빈문자열 ""

 

📓 조건문에 전달되었을 때 모든 개체는 참으로 평가된다.

var b = new Boolean(false);

if(b) {} // if 조건은 참으로 평가된다.

//조건문에서 거짓 .: false, undefined, null, 0, NaN, ""빈문자열

var a; //undefined 변수만 선언하고 값이 없음
if(a) {
	console.log("참");
} else {
	console.log("거짓");
}
// undefined 라서 결과 거짓


// null 이 아닌 모든 객체는 참이다.
var b = new Boolean(false); //사용 권장 x
console.log(b); //Boolean 
console.dir(b);
console.log(b.valueOf()); //false

//부울린은 객체라서, if(b) 해도 참으로 평가한다.
if(b) {
	console.log("참");
} else {
	console.log("거짓");
}

 

 

✔️ 조건문 종류

✨ if ~ else 문

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<script type="text/javascript">

function sendOk() {
	const f = document.myForm;
	
	//document.myForm.name.vaule
	//if( f.name.value === "" ) 이랑 같은 말
	if(! f.name.value ){
		alert("이름은 필수 입력입니다.")
		f.name.focus();
		return;
	}
	
	if(! f.subject.value ){
		alert("과목은 필수 입력입니다.")
		f.subject.focus();
		return;
	}
	
	//입력도 필수로 하기 / 숫자만 입력 시키기
	//isNaN = 숫자가 아니면 참. 안에 실행
	if(! f.score.value || isNaN(f.score.value) ){
		alert("점수는 숫자만 입력 가능입니다.")
		f.score.focus();
		return;
	}
	
	let s = f.name.value + ", " + f.subject.value + ", " + f.score.value;
	alert(s);
	
}


</script>

</head>
<body>

<h3> 조건문 </h3>

<!-- form 태그 안에 있으면 접근이 매우 쉬워진다. -->
<form name="myForm">
	<p> 이름 : <input type="text" name="name"> </p>
	<p> 과목 : <input type="text" name="subject"> </p>
	<p> 점수 : <input type="text" name="score"> </p>
	<p>
		<button type="button" onclick="sendOk()"> 확인 </button>
	</p>
</form>


</body>
</html>
💡 if 문으로 input 3개에 값이 입력되지 않으면 return 되도록 코드를 작성했다.
.focus() : 포커싱 하도록 만드는 함수
f.name.value : myForm 에 name이 'name' 인 input 의 value (값) 을 말한다.

 

function result() {
	//id 로 접근하기
	//let n = document.getElementById("num").value;
	//선택자로 접근하기 : querySelector (아이디, 클래스, 태그, 가상 선택자 등...)
	let n = document.querySelector("#num").value;
	let s;
	
	n = parseInt(n);
	
	if(n%2===0 && n%3===0) {
		s = "2와 3의 배수입니다.";
		
	} else if(n%2===0) {
		s = "2의 배수입니다."
	} else if(n%3===0) {
		s = "3의 배수입니다."
	} else {
		s = "2 또는 3의 배수가 아닙니다.";
	}
	
	alert(n + " - > " + s);
}
💡 id 로 접근하는건 getElementById 지만,
선택자로 접근하는건 querySelector 를 쓴다! (아이디, 클래스, 태그, 가상 선택자 등...)

 

✨ switch 문

function result() {
	//id 로 접근하기
	//let n = document.getElementById("num").value;
	//선택자로 접근하기 : querySelector (아이디, 클래스, 태그, 가상 선택자 등...)
	let n = document.querySelector("#score").value;
	let s;
	
	if(!n || isNaN(n)) {
		alert("점수는 숫자만 가능합니다.")
		document.querySelector("#score").focus();
		return;
	}
	
	n = parseInt(n);
	
	//	Math.floor(X) : X 를 넘지 않는 최대 정수
	switch(Math.floor(n/10)){
	case 10:
	case 9: s = "A"; break;
	case 8: s = "B"; break;
	case 7: s = "C"; break;
	case 6: s = "D"; break;
	default: s = "F"; break;
		
	}

	alert(n + " - > " + s);
}
💡 Math.floor(X) : X를 넘지 않는 최대 정수를 뜻한다.
Math.floor(n/10) : n 값을 10으로 나눠서, 정수 10~6 사이 값을 case 로 분류해서 반환한다.

 

✨ while 문

✨ do while 문

✨ for 문

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<script type="text/javascript">
var s, n;

//while
s=0;
n=0;
while(n < 100){
	n++;
	s+=n;
}
console.log('while: ' + n + ', ' + s);

//do!while
s=0;
n=0;
do{
	n++;
	s+=n;
}while(n < 100);
console.log('do while: ' + n + ', ' + s);

//for 문 이용
s=0;
for(n=1; n<100; n++){
	s+=n;
}
console.log('for: ' + n + ', ' + s);


</script>

</head>
<body>

<h3> 반복문 </h3>

</body>
</html>

 

 

🔒 정규식을 쓴 for 문으로 구구단 만들기

if( ! /^[1-9]{1}$/.test(dan)) {
		document.querySelector("#num").focus();
		return;
	}
💡위에 쓰인 정규식의 의미
^: 처음부터
[1-9] 사이의 숫자가
{1} 1개가 온다.

 

- 먼저 HTML과 CSS 문

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">

<style type="text/css">

.title {
	font-weight: 700;
	color: blue;
}


</style>

</head>
<body>

<h3> 반복문 </h3>

<p>
	<input type="text" id="num" placeholder="원하는 단">
	<button type="button" onclick="result();">확인</button>
</p>
<hr>
<div id="resultLayout"></div>
function result(){
	let dan, out;
	
	dan = document.querySelector("#num").value;
	//{1} : 숫자 한글자만 가능
	if( ! /^[1-9]{1}$/.test(dan)) {
		document.querySelector("#num").focus();
		return;
	}
	
	dan = parseInt(dan);
	
	//out = "<p style='font-weight:700; color:blue;'>**" + dan + "단**</p>";
	out = "<p class='title'>**" + dan + "단 **</p>";
	for(let n=1; n<=9; n++){
		out+=dan + ' * ' + n + " = " + (dan*n) + "<br>";
	}
	
	// innerHTML :요소에 HTML 을 설정하거나 변환
	//resultLayout div 태그 안에 태그를 때려넣은것임!
	document.querySelector("#resultLayout").innerHTML = out;
	
}

 

 

🔒 문제 : 1~100까지 수중 2또는 3의 배수를 제외한 수의 합

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">

<script type="text/javascript">
var s, n;

//1~100까지 수중 2또는 3의 배수를 제외한 수의 합
s = n = 0;

while(n < 100){
	n++;
	if(n%2===0 || n%3===0){
		continue;
	}
	s += n;
}


console.log("결과: " + s);


</script>

</head>
<body>

</body>
</html>

 

 

🔒 문제 : 1부터 n까지의 자연수 합이 최소 1000이상이 되는 n과 s 출력

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">

<script type="text/javascript">
var n, s;

n = s = 0;

//1부터 n까지의 자연수 합이 최소 1000이상이 되는 n과 s 출력

while(true) {
	n++;
	if(s>=1000){
		break;
	}
	s+=n;
}

console.log(n + ", " + s)


</script>

</head>
<body>

<h3> break </h3>

</body>
</html>

 

 

🔒 문제 : 합/짝수합/홀수합 버튼에 따라 합 출력하기

- HTML/CSS

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">

</head>
<body>

<form name="myForm" action="javascript:result();">
<p>
	<input type="radio" name="opt" value="1" checked="checked"> 합
	<input type="radio" name="opt" value="2"> 짝수합
	<input type="radio" name="opt" value="3"> 홀수합
</p>

<p>
	<input type="number" name="num" style="width: 150px;" 
		min="0"
		required="required"
		placeholder="숫자를 입력하세요">
	<button type="button" onclick="result();"> 결과 </button> <!--  button 에 type 이 없으면 submit 버튼이다. -->
</p>
</form>
<hr>

<div id="resultLayout"></div>

 

- 자바스크립트 (함수 result())

<script type="text/javascript">
function result() {
	const f = document.myForm;
	
	let num = parseInt(f.num.value);
	let c = f.opt.value;
	
	let s = 0;
	let start = c === "2" ? 2 : 1;
	let step = c === "1" ? 1 : 2;
	
	for(let n=start; n<=num; n+=step){
		s += n;
	}
	
	document.querySelector("#resultLayout").innerHTML = s;
	
}

</script>


</body>
</html>

 

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기