본문 바로가기

수업내용

[Day38][JavaScript] 데이터 타입 / 선택자 잡기 / window.onload

Ⅰ. 데이터타입

 

-- Dynamic Web Project(JavaScriptStudy) - Next - build\WEB-INF\classes - web.xml 체크

-- Folder(chap1)와 Html File(form_01) 생성

 

<body>

<div id="container">
<div id="container">
	<h2 id="underline">회원가입</h2>
</div>
		
<div id="frm">
	<form name="registerFrm">
		<ul>
		<li>
			<label for="name">아이디</label>
			<input type="text" name="userid" id="userid" size="20" maxlength="20" required autofocus autocomplete="off" />
		</li>
				
		<li>
			<label for="passwd1">암호</label>
			<input type="password" name="passwd" id="passwd1" size="20" maxlength="20" required/>
		</li>
			
		<li>
			<label for="passwd2">암호확인</label>
			<input type="password" id="passwd2" size="20" maxlength="20" required/>
		</li>
				
		<li>
			<label for="name">성명</label>
			<input type="text" name="name" id="name" size="20" maxlength="20" required/>
		</li>
				
		<li>
			<label for="email">이메일</label>
			<input type="email" name="email" id="email" size="40" maxlength="40" placeholder="예 abc@gmail.com"/>
		</li>
				
		<li>
			<label for="tel">전화번호</label>
			<input type="tel" name="tel" id="tel" size="20" maxlength="11" placeholder="-는 제외하고 입력"/>
		</li>
				
		<li>
			<input type="submit" class="btn" value="확인" />
			<input type="reset" class="btn" value="취소" />
		</li>
		</ul>
	</form>
</div>
	
	</div>

</body>

 

<style type="text/css">
div#container {
	width: 80%;
	margin: 0 auto;
		
}
	
h2#underline {
	text-decoration: underline;
	text-align: center;
}
	
div#frm ul {
	list-style-type: none;
}
	
div#frm ul > li {
	padding: 10px 0;
}
	
div#frm ul > li > label {
	display: inline-block;
	width: 100px;
}
	
input.btn {
	width: 70px;
	height: 30px;
	font-size: 12pt;
	font-weight: bold;
	margin: 20px 0 0 40px;
}
	
</style>

 

 

<button type="button" onclick="checkType()">자바스크립트에서 변수타입 확인하기</button>
<button type="button" class="btn" onclick="goSubmit()">확인</button>
<button type="reset" class="btn">취소</button>

 

-- input submit은 데이터를 조건에 맞든 안 맞든 무조건 보내버리므로 input submit 대신 button을 사용한다.

-- 반드시 type을 꼭 적어 주어야 한다.

 

<head>
<script type="text/javascript">
	function checkType(){
		alert("확인 버튼을 클릭하셨습니다.")
	}
</script>
</head>

 

 

 

checkType()

var a = 10;
alert("a=10을 했을 때 변수 a의 타입은 => " + typeof a)
		
a = 21.345;
alert("a=21.345을 했을 때 변수 a의 타입은 => " + typeof a)
		
a = "안녕하세요?";
alert("a="안녕하세요?"을 했을 때 변수 a의 타입은 => " + typeof a)

a = true; // a = false;
alert("a=true을 했을 때 변수 a의 타입은 => " + typeof a)

 

 

 

 

 

 

checkType()

a = document.registerFrm.userid;
alert("a=document.registerFrm.userid을 했을 때 변수 a의 타입은 => " + typeof a)
		
a = document.registerFrm.user;
alert("a=document.registerFrm.user을 했을 때 변수 a의 타입은 => " + typeof a)

 

 

 

 

function goSubmit(){
		
		var frm = document.registerFrm;
		
		var useridVal = frm.userid.value;
		
		alert("userid => " + useridVal);
        console.log("userid => " + useridVal);
	}

 

 

 

 


 1. 아이디 입력란에 데이터값이 들어왔는지 검사하기

 

 

function goSubmit(){
		
	var frm = document.registerFrm;

	var useridVal = frm.userid.value.trim();
		
	if(useridVal == "") {
		alert("아이디를 입력하세요!");
		frm.userid.value = "";
		frm.userid.focus();
        
        return;
	}
}

 


2. 암호 입력란에 데이터값이 들어왔는지 검사하기

 

var passwd1Val = frm.passwd.value.trim();
		
		
if(passwd1Val == ""){
	alert("암호를 입력하세요!");
	frm.passwd.value = "";
	frm.passwd.focus();
			
	return;
}

 


3. 암호 입력란과 암호확인 입력란의 데이터값이 같은지 다른지 검사하기

 

var passwd2Val = document.getElementById("passwd2").value.trim();

if(passwd1Val != passwd2Val){
	alert("암호와 암호확인값이 서로 다릅니다.")	
	frm.passwd.value = "";
	document.getElementById("passwd2").value = "";	
	frm.passwd.focus();	
	
    return;
}

 


4. 성명 입력란에 데이터값이 들어왔는지 검사하기

 

var nameVal = frm.name.value.trim();
		
if(nameVal == ""){
	alert("성명을 입력하세요!");
	frm.name.value = "";
	frm.name.focus();
			
	return;
}

 


5. 이메일 입력란에 데이터값이 들어왔는지 검사하기

 

var emailVal = frm.email.value.trim();
		
if(emailVal == ""){
	alert("이메일을 입력하세요!");
	frm.email.value = "";
	frm.email.focus();
			
	return;
}

 


6. 전화번호 입력란에 데이터값이 들어왔는지 검사하기

 

var telVal = frm.tel.value.trim();
		
if(telVal == ""){
	alert("전화번호를 입력하세요!");
	frm.tel.value = "";
	frm.tel.focus();
			
	return;
}

 


7. 모든 입력란이 올바르게 입력이 된다면 폼에 있던 데이터를 전송하기

 

frm.action="register.do";
frm.method="post";
frm.submit();

 


Ⅱ. 선택자 잡기

 

Folder(chap1)에 Html File(form_02) HTML5 ch02_form의 02.html 복사하여 생성

 

<button type="button" class="btn" onclick="goSubmit();">확인</button>
<button type="reset" class="btn">취소</button>

 


▷ 자바스크립트에서 id 속성을 가지고 선택자를 잡는 방법
-- document.getElementById("id값");

 

<script type="text/javascript">
function goSubmit(){
var val = document.getElementById("userid").value.trim();
console.log("typeof val : " + typeof val);
console.log("아이디 : " + val);
}
</script>

 

 


자바스크립트에서 name 속성을 가지고 선택자를 잡는 방법

-- document.getElementsByName("name속성값");

-- 리턴타입은 배열타입

 

<label>취미</label>
<label for="hobby1" class="hobby">게임</label><input type="checkbox" name="hobby" id="hobby1" value="game"/>&nbsp;&nbsp; 
<label for="hobby2" class="hobby">영화감상</label><input type="checkbox" name="hobby" id="hobby2" value="movie"/>&nbsp;&nbsp;
<label for="hobby3" class="hobby">글쓰기</label><input type="checkbox" name="hobby" id="hobby3" value="writing"/>&nbsp;&nbsp;
<label for="hobby4" class="hobby">음악감상</label><input type="checkbox" name="hobby" id="hobby4" value="music"/>

 

var val = document.getElementsByName("hobby");
console.log("typeof val : " + typeof val);

for(var i=0; i<val.length; i++){
	console.log(val[i].value);
}

 

 

-- 체크가 되어져 있든 안 되어져 있든 모든 값이 나타난다.

 

 

체크가 되어진 것만 나타내려면 

console.log(val[i].checked);

 

 

 

-- 체크가 되어 있으면 true, 안 되어 있으면 false

 

for(var i=0; i<val.length; i++){
	if(val[i].checked)
	console.log(val[i].value);
}

 

 

-- 체크된 것만 출력된다.

 


자바스크립트에서 class 속성을 가지고 선택자를 잡는 방법

-- document.getElementsByClassName("Class명");

-- 리턴타입은 배열타입

 

val = document.getElementsByClassName("myselect");
console.log("typeof val : " + typeof val);

for(var i=0; i<val.length; i++){
	console.log(val[i].value);
}

 

<li>
<label for="school">최종학력</label>
<select id="school" class="myselect">
	<option value="highSchool">고졸</option>
	<option value="collage">초대졸</option>
	<option value="university">대졸</option>
	<option value="graduate">대학원졸</option>
</select>
</li>
					
<li>
<label>선호프로그램</label>
<select name="program" id="program" class="myselect">
	<optgroup label="데이터베이스">
	<option value="Oracle">Oracle</option>
	<option value="MSSQL">MSSQL</option>
	<option value="sybase">sybase</option>
	</optgroup>
	<optgroup label="개발언어">
	<option value="Java">Java</option>
	<option value="JSP">JSP</option>
	<option value="Spring">Spring</option>
	<option value="C/C++">C/C++</option>
	</optgroup>
</select>
</li>

 

 

 


 자바스크립트에서 Tag를 가지고 선택자를 잡는 방법

-- document.getElementsByTagName("Tag명");

-- 리턴타입은 배열타입

 

val = document.getElementsByTagName("label");
for (var i = 0; i < val.length; i++) {
	console.log(val[i].innerText);
}

 

 

 

 

문제 ▷▷ 취미를 선택하는 체크박스에 아무 체크도 안 했더라면 "취미는 최소한 1개 이상 선택하세요."라는 alert이 뜨게 하세요.

 

var hobbyArr = document.getElementsByName("hobby");
		
var cnt = 0;
for(var i=0; i<val.length; i++){
	if(hobbyArr[i].checked)
		{
		cnt++;
		}
			
	if(cnt == 0) {
		alert("취미는 최소한 1개 이상 선택하세요.")
	}
	else {
		console.log(val[i].value);
	}
}

 

문제 ▷▷ 취미를 선택하는 체크박스에 최소한 2개 이상 체크를 안 했더라면 "취미는 최소한 2개 이상 선택하세요."라는 alert을 띄우세요.

 

var hobbyArr = document.getElementsByName("hobby");
		
var cnt = 0;
for(var i=0; i<val.length; i++){
	if(hobbyArr[i].checked)
		{
		cnt++;
		}
	
	if(cnt <= 2) {
		alert("취미는 최소한 2개 이상 선택하세요.");
		return
	}
	else {
		console.log(val[i].value);
	}
}

 


Ⅲ. window.onload

 

window.onload = function() {
	alert("안녕하세요?");
	}

 

 

-- 웹브라우저에 HTML문서(document)가 로드되고 나서 자동적으로 실행할 내용이 있으면 그 내용은 위와 같이 기술해 주면 된다.

 

 

window.onload = function() {
	var val = "";
	var year = 1950;
	for(var i=0; i<2019-1950+1; i++){
		val += "<option>"+(year+i)+"</option>";	
	}
		
	var obj = document.getElementById("birthYear").innerHTML = val;
}

 

 

 


현재 날짜 구하기

 

var now = new Date();

var currentYear = now.getFullYear(); // 현재 년도
var currentMonth = now.getMonth()+1; // 현재월
var currentDay = now.getDate(); // 현재일

var today = currentYear+"-"+currentMonth+"-"+currentDay;
		
alert("오늘날짜 : " + today);

 

 

-- 현재 월은 1~12가 아닌 0~11로 나타나기 때문에 꼭 1을 더해 주어야 한다.

 

 

var now = new Date();

var currentYear = now.getFullYear();
var currentMonth = now.getMonth()+1;
var currentDay = now.getDate();
		
if(currentMonth < 10)
	month = "0"+month;
		
if(currentDay < 10)
	day = "0"+day;
		
var today = currentYear+"-"+currentMonth+"-"+currentDay;
		
alert("오늘날짜 : " + today);

 

-- 현재월과 현재일이 10보다 작으면 앞에 "0"이 붙어서 나온다.

 

 

var val = "";
var year = 1950;
for(var i=0; i<(currentYear-1950)+1; i++){
	val += "<option>"+(1950+i)+"</option>";	
}

 

<li>
	<label>출생년도</label>
	<select name="birthYear" id="birthYear"></select>
</li>

 

 

 

문제 ▷▷ 출생년도가 1950년도가 아닌 2019년도부터 먼저 나오도록 하세요.

 

var val = "";
var year = 1950;
for(var i=0; i<(currentYear-1950)+1; i++){
	val += "<option>"+(currentYear-i)+"</option>";	
}

 

 

 

문제 ▷▷ 배열을 이용하여 아래의 결과가 나오도록 하세요.

 

 

<li>
	<label for="sports">스포츠</label>
	<select name="sports" id="sports"></select>
</li>

 

▷ 배열을 나타내는 두 번째 방법

 

var val2 = "";
var sports = ["야구", "축구", "농구", "배구", "수영", "에어로빅", "탁구"]
for(var i=0; i<sports.length; i++){
	val2 += "<option>"+sports[i]+"</option>";
}
		
var obj2 = document.getElementById("sports").innerHTML = val2;

 


▷ 배열을 나타내는 두 번째 방법

 

<li>
	<label for="beverage">음료</label>
	<select name="beverage" id="beverage"></select>
</li>

 

var beverageArr = new Array();
beverageArr.push("커피");
beverageArr.push("사이다");
beverageArr.push("콜라");
beverageArr.push("환타");
		
var beverage = "";
for(var i=0; i<beverageArr.length; i++){
	beverage += "<option>"+beverageArr[i]+"</option>";
}
		
var obj2 = document.getElementById("beverage").innerHTML = val2;

 

 


출생년도의 선택에 따라 현재 나이를 출력해 보세요.

 

<li>
	<label>출생년도</label>
	<select name="birthYear" id="birthYear" onchange="goCurrentAge();"></select>
</li>
					
<li>
	<label>현재나이</label>
	<div id="currentAge" style="display: inline;"></div>
</li>

 

function goCurrentAge() {
		
	var birthYear = document.getElementById("birthYear").value;

	var now = new Date();
	var currentYear = now.getFullYear();
	
	var currentAge = currentYear - parseInt(birthYear) + 1; // 현재 나이
		
	document.getElementById("currentAge").innerHTML = currentAge;
}