//Google AdSense

함수 복습 실습

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>함수</title>
<script type="text/javascript">
	/*  
		실습1. 아래의 함수 호출부가 있다. 호출부를 보고 선언부를 완성시켜라.
		선언부에서 인수값 전체를 합산시키는 코드 작성.
		
		var arr = [10,20,30];
		myFunction(20,30,arr);
		
	*/
	
	var arr = [10,20,30];
	
	//익명함수
	var myFunction = function(n1, n2, arr){
		var re = 0;
		for(var i = 0; i < arr.length ; i++){
			re += arr[i];
		}
		re += n1+n2;
		return re;		
	}
	
	//기본형
	function myFunction(n1, n2, arr){
		var re = 0;
		for(var i = 0; i < arr.length ; i++){
			re += arr[i];
		}
		re += n1+n2;
		return re;		
	}
	
	//호출
	myFunction(20,30,arr);
	
	/*  
		실습2. 아래의 함수 호출부가 있다. 호출부를 보고 선언부를 완성시켜라.
		(함수 호출시 리턴 없이 콘솔로 매개변수 출력)
		
		myFunction2('한국스마트정보교육원');
	*/
	
	//익명함수
	var myFunction2 = function (str) {
		console.log(str);		
	}
	
	//기본형
	function myFunction2 (str) {
		console.log(str);
	}
	
	//호출
	myFunction2('한국스마트정보교육원');
	
	/*  
	실습3. 아래의 함수 호출부가 있다. 호출부에 1개의 넘버형 인수가 들어가고 선언부에는 매개변수값으로 구구단을 출력하는 코드가 들어가있다.
	선언부를 완성시켜라.(함수 호출시 리턴없이 콘솔로 결과값 출력)
	
	myFunction3(2);
	*/
	
	var myFunction3 = function(n) {
		for(var i = 1; i<=9 ; i++){
			console.log (i * n);
		}
	}
	
	function myFunction3(n) {
		for(var i =1; i<=9 ; i++){
			console.log(i*n);
		}
		
	}
		
	myFunction3(2);

</script>
</head>
<body>

</body>
</html>

 


Jquery 선택자

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>선택자</title>
<script type="text/javascript" src="./resource/js/jquery-3.4.1.min.js"></script>
<script type="text/javascript">
	/*  
		DOM 객체를 먼저 읽은 후 readt메서드의 함수 실행
			1.
			$(document).ready(function(){
				
			})
			2.
			$(function(){
				
			})
	*/
	
	//제이쿼리가 DOM객체 읽기를 완료한 후에 실행할 준비가 되었다. (동적으로 생성한 html은 읽지 못한다.)
	$(function(){
		
		// 선택자 - $('선택자') -> 제이쿼리 함수를 실행하면서 인수값으로 css선택자 삽입
	
	
		/*********************************************************************************

		1. 직접선택자 
			제이쿼리 함수에 선택자를 인수값으로 삽입하여 실행
		
		*	$('#아이디')			- 아이디의 객체를 검색하여 객체 반환 (단 하나)
		*	$('.클래스')			- 인수값과 일치하는 클래스를 모두 선택하여 객체 반환
		*	$('[속성명]')			- 인수값과 일치하는 속성명을 모두 선택하여 객체 반환		
		*	$('[속성명=속성값]')	- 인수값과 일치하는 속성명=속성값 을 모두 선택하여 객체 반환	
			$('태그명')			- 인수값과 일치하는 태그를 모두 선택하여 반환
			$('선택자1,..,선택자n')	- 인수값 전체에 해당되는 객체를 선택하여 객체 반환
			$('선택자1 선택자2')		- 첫번째 선택자의 하위인 두번째 선택자를 선택하여 객체 반환
			$('태그명선택자')		- 태그명과 일치하면서 선택자와 일치하는 객체를 반환

				ex) $('h1.title')	h1태그이면서 title이라는 클래스를 가진 객체
					$('h1#title')	h1태그이면서 title이라는 아이디를 가진 객체
					$('h1[class]')	h1태그이면서 class라는 속성을 가진 객체

				
		2. 메서드 활용
			제이쿼리 선택자로 하여 객체가 반환될 경우 각종 메서드를 사용할 수 있다.
			
			
		3. 인접관계 선택자
			직접선택자로 선택 후 상세하게 객체를 검색할 수 있다.
		
			$('선택자').parent();				- 선택된 객체의 부모 객체를 검색하여 객체 반환
				ex) $('article').parent();
				
			$('선택자').parents();			- 선택된 객체의 부모 객체 전체를 검색하여 객체 반환
										인수값이 있을 경우 선택된 객체의 인수값과 일치하는 부모 객체만 반환
				ex) $('article').parents();
					$('article').parents('body');
					
			$('선택자').children();			- 선택된 객체의 자식요소를 검색하여 객체 반환
				ex) $('article').children();
				
			$('선택자').find('자식요소 선택자');	- 선택된 객체의 자식요소 중 find 메서드의 인수값과 일치하는 객체를 반환
			
			
			$('선택자').prev();				- 선택된 객체의 동일선상 이전 객체를 선택하여 객체 반환
				ex) $('body').prev();
			
			$('선택자').next();				- 선택된 객체의 동일선상 다음 객체를 선택하여 객체 반환
				ex) $('head').next();
				
			
		4. 속성 상태에 따른 선택자
			선택된 객체의 상태를 표기하여 상태에 일치하는 객체를 선택하여 반환
				('checked','selected','hidden')
					$('선택자:checked')
					$('선택자:selected')
					$('선택자:hidden')
					
		5. 속성 상태를 확인하는 메서드
			is(':속성 상태')	-	속성 상태를 확인하는 메서드 true 혹은 false 반환
			prop('속성상태',true or false)	-	속성상태를 확인하거나 적용하는 메서드	
					
		*********************************************************************************/
		$('#btn').click(function(){
			$('.check:checked').each(function(){
				console.log($(this).val());
				//val() == value 속성을 가진 폼태그의 value 값을 가지고 오거나 삽입
				//val('값') == 값 삽입, val() == 값 가지고 오기
			})
			
		});
		$('#btn1').click(function(){
			$('.check').prop('checked', true);
		});
		$('#btn2').click(function(){
			$('.check').prop('checked', false);
		});
		
		$('#btn3').click(function(){
			$('.check').each(function(){
				if($(this).prop('checked')){
					console.log($(this).val());
				}
			})
		})
	});
</script>
</head>
<body>
	<input type="checkbox" class="check" value=1 />1
	<input type="checkbox" class="check" value=2 />2
	<input type="checkbox" class="check" value=3 />3
	
	<button type="button" id="btn">확인</button>
	<button type="button" id="btn3">확인2</button>
	<button type="button" id="btn1">전체 체크</button>
	<button type="button" id="btn2">체크 해제</button>

	
</body>
</html>

JQuery 탐색선택자

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>제이쿼리 탐색 선택자, 배열 관련</title>
<script type="text/javascript">
	/*  
		<탐색선택자>
			-	선택자로 이미 선택된 객체를 한번 더 검색하여 객체를 반환
			$('선택자').first();		-	선택된 객체 중 첫번째 객체 요소 반환
			$('선택자').last();		-	선택된 객체 중 마지막 요소 반환
			$('선택자').eq(index);	-	선택된 객체중 인수값과 일치하는 인덱스 요소 선택 반환
			$('선택자').filter('선택자')-	선택된 객체중 filter 메서드의 인수값인 선택자와 일치하는 객체를 선택하여 반환
				ex) $('article').filter('.post-7') >> article 객체 중에서 .post-7인 article 객체 반환
					(vs. 인접관계 선택자 혼동하지 않기.)
		<배열 관련 메서드>
			-	다중으로 선택된 객체를 반복문 형태와 비슷하게 풀 수 있다.
			
			$('선택자').each();		- 다중으로 선택된 객체를 하나씩 풀어 함수를 실행
				ex)	$('선택자').each(function(){});	
					$.each($('선택자'), function(){});
			
			$('선택자').index('객체')	-다중으로 선택된 객체 중 index메서드의 인수객체와 동일한 객체를 검색하여 인덱스 반환.
	*/
</script>
</head>
<body>

</body>
</html>

 


Jquery 선택자 실습1 

(https://api.jquery.com/에서 test)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>제이쿼리 선택자, 인접관계선택자 실습</title>
<script type="text/javascript">
	/*  
		실습4. 제이쿼리 사이트의 api 메뉴에 있는 article 태그 클릭시 클릭한 article 내의 a태그의 모든객체를 제거하시오.
		
		$('article').click(function(){
			//최종적으로 선택된 객체에 remove() 메서드 활용시 선택된 객체 제거
			//$(this) 는 선택된 article의 태그임으로 인접관계 선택자를 활용하여 자식 및 부모객체를 선택할 수 있음
		})
	*/
	
	$('article').click(function(){
		$(this).find('a').remove();
	})
	
	/*  
	실습5. 제이쿼리 사이트의 api 메뉴에 있는  .entry-summary 클릭 시  
	.entry-summary의 상위인  article 객체가 제거되도록 하시오.
	*/
	
	$('.entry-summary').click(function(){
		$(this).parents('article').remove();
	})
	
	/*  
	실습6. 제이쿼리 사이트의 api 메뉴에 있는  .entry-summary 클릭 시  
	 article > .entry-title > a태그 텍스트를 '한국스마트정보교육원'으로 변경하시오.
	*/
	
	$('.entry-summary').click(function(){
	    $(this).parents('article').find('.entry-title').find('a').text('한국스마트정보교육원');
	})
	
</script>
</head>
<body>

</body>
</html>

 

Jquery 선택자 실습2

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>제이쿼리 선택자, 인접관계 선택자</title>
<script type="text/javascript" src="./resource/js/jquery-3.4.1.min.js"></script>
<script type="text/javascript">
	$(function(){
		$('.del-input-group').click(function(){
			$(this).parents('.input-group').remove(); // == $(this).parent().remove();          
		})
	});
</script>
</head>
<body>
	<!--
	실습6. 
	.del-input-group 클릭시 .input-group이 제거되도록 하시오.
	-->
	<div class = "input-wrap">
		<div class = "input-group">
			<input type="text" name="memberName">
			<button type="button" class = "del-input-group">제거</button>
		</div>
		<div class = "input-group">
			<input type="text" name="memberName">
			<button type="button" class = "del-input-group">제거</button>
		</div>
		<div class = "input-group">
			<input type="text" name="memberName">
			<button type="button" class = "del-input-group">제거</button>
		</div>
		<div class = "input-group">
			<input type="text" name="memberName">
			<button type="button" class = "del-input-group">제거</button>
		</div>
		<div class = "input-group">
			<input type="text" name="memberName">
			<button type="button" class = "del-input-group">제거</button>
		</div>
	</div>
</body>
</html>

 

each, 속성 상태 확인 메서드 실습

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>each, 속성 상태 확인 메서드 실습</title>
<script type="text/javascript" src="./resource/js/jquery-3.4.1.min.js"></script>
<script type="text/javascript">
	/*  
		실습8. #btn 클릭시 .check의 객체가 체크가 되었다면 체크해제, 체크가 해제되었다면 체크를 하는 코드를 작성하시오.
	*/
	
	$(function(){
		$('#btn').click(function(){
			$('.check').each(function(){
				if($(this).prop('checked')){
					$(this).prop('checked',false);
				}else{
					$(this).prop('checked',true);	
				}
			})
		})
	});
	
</script>
</head>
<body>
	<input type="checkbox" class="check" value=1 /> 1
	<input type="checkbox" class="check" value=2 /> 2
	<input type="checkbox" class="check" value=3 /> 3
	
	<button type="button" id="btn">확인</button>

</body>
</html>

 

<파일을 다운로드, import 해서 내부 네트워크에서 사용>

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>제이쿼리 임포트</title>
<script type="text/javascript" src="./resource/js/jquery-3.4.1.min.js"></script>
</head>
<body>

</body>
</html>

*.min.* < 들여쓰기, 공백, 행간, 주석이 무시되어 압축됨. 용량이 작아 로딩 속도가 빠름.

 


<외부 네트워크에 접근해서 사용>

 

 


 

첫번째 인수에 선택자를 잘 파악해서 대입해 객체 반환.

 

 

$('article').click(function(){console.log('article클릭')})

 

$('article').click(function(e){console.log('article클릭',e)})

위치값이 같이 출력됨.

 


callback 함수

	var call = function(myFunction) {
		console.log(typeof myFunction);
		if(typeof myFunction =='function'){
			myFunction('안녕하세요');
		}
	};
	
	call(function(msg) {
		console.log(msg);
	})
	var sum = function(n1, n2, fn){
		if(typeof fn == 'function'){
			fn(n1 + n2);
		}
	};
	sum (10,20,function(n){
		console.log(n);
	})

callback 함수 실습

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>콜백함수 실습</title>
<script type="text/javascript">
	/*  
		실습1. sum이라는 함수가 있다. 첫번째 인수는 배열, 두번째 인수는 함수이다.
		sum함수를 실행시켜 배열의 총 합산값을 2번째 인수의 함수의 매개변수로 받도록 하여라.
	*/
	
	
	var arr = [10, 20, 30, 40, 50];
	
	
	
	var sum = function(arr, fn){
		if(typeof fn == 'function'){
			var sig = 0;
			for(var i = 0; i <arr.length ; i++){
				sig+=arr[i];
			}
			fn(sig);
		}
	};
		
	sum(arr,function(n1){
		console.log(n1);
	});
	
	/*  
		실습2. strFn이라는 함수가 있다. strFn함수의 첫번째 인수는 문자열, 두번째 인수는 함수이다.
		strFn 함수가 실행시 첫번째 인수에 담긴 문자열 값을 '-' 특수기호로 구분하여 배열로 2번째 인수의 함수의 매개변수로 반환하여라.
		strFn('한국스마트-정보교육원',function(){
			
		})
	*/
	
/* 	var strFn = function(str, fn){
		if(typeof fn == 'function'){
			var string = '';
			string = str.split(str,'-');
			fn(string);
		}
	};
	strFn('한국스마트-정보교육원',function(arr){
		console.log(arr);	
	})
 */
	
	var strFn = function(str, fn){
		if(typeof fn == 'function'){
			fn(str.split(str,'-'));
		}
	};
	strFn('한국스마트-정보교육원',function(arr){
		console.log(arr);	
	})

	
</script>
</head>
<body>

</body>
</html>

 

문자열 객체

더보기

"text/어쩌구"  포매터 콘텐츠타입 mime-type 명시 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문자열 객체</title>
<script type="text/javascript">
	/*
		값에 의해 생성된 문자열 객체는 아래의 메서드 및 속성을 사용할 수 있다.
		var 변수 = '';
		var 변수 = new String();
		var 변수 = new String('');
		
		<String 객체의 메서드 및 속성>
			1.	변수.indexOf(''); - 변수값에 담긴 문자열을 indexOf의 인수값과 일치하는 인덱스 변호를 반환
				변수.lastIndexOf(''); - 변수값에 담긴 문자열을 lastIndexOf의 인수값과 일치하는 인덱스 번호를 뒤에서부터 반환
			2.	변수.replace('대상문자열', '바뀔 문자열') - replace의 첫번째 인수값과 일치하는 값을 두번째 인수값으로 치환
			3.	변수.substring(숫자1, 숫자2) - 문자열의 인덱스값 기준으로 substring의 첫번째 인수 부터 두번째 인수 전 까지 문자열을 잘라 반환
											인수값이 1개일 경우 인수값과 일치하는 인덱스 번호부터 출력
			4.	변수.length - (속성) 문자열의 개수를 반환
			5.	변수.split('구분자') - split 인수값 기준으로 잘라 배열로 반환
			6.	변수.toLowerCase() - 영문을 소문자로 변환
				변수.toUpperCase() - 영문을 대문자로 변환
			7.	변수.trim() - 문자열 처음과 끝의 공백 제거 (완전히 제거하려면 replace or 정규표현식 이용)
	*/
	
	//1. indexOf & lastIndexOf
	var str= '한국스마트정보교육원한국스마트정보교육원한국스마트정보교육원';
	console.log(str.indexOf('교육원'));
	console.log(str.lastIndexOf('교육원'));
	
	//2. replace
	var str = '한국스마트정보교육원';
	console.log(str.replace('한국', '전주한국'));
	
	//3. substring
	var str= '한국스마트정보교육원';
	str.substring(2,7);
	
	//4. length
	var str = '한국스마트정보교육원';
	console.log(str.length);
	
	//5. split
	var str= '한국-스마트-정보-교육원';
	console.log(str.split('-'));

	//6. toLowerCase & toUpperCase
	var str='abc';
	console.log(str.toUpperCase());
	console.log(str.toLowerCase());
	
	//7. trim
	var str= '          한 국  스 마 트  정 보    교 육 원      ';
	console.log(str.trim());
</script>

</head>
<body>

</body>
</html>

1. indexOf & lastIndexOf

2. replace

3. substring

4. length

5. split

6. toLowerCase & toUpperCase

7.  trim : 문자열 "앞&뒤"의 공백만 제거

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문자열 객체 실습 1</title>
<script type="text/javascript">
	/*
		실습 1. url 이라는 변수에 주소값이 담겨있다. url에 표현된 주소의 도메인명과 프로젝트명을 제외한 나머지 url만 출력시켜라.
			1.	도메인 - naver.com
			2.	프로젝트명 - myProject
			-완료시 출력될 url - myPage?name=홍길동&age=20
			-사용할 메서드 indexOf, substring
	*/
	var url = 'https://naver.com/myProject/myPage?name=홍길동&age=20';
	var proName = 'myProject/';
	url = url.substring(url.indexOf(proName)+proName.length);
	
	/*  
		실습2. url이라는 변수에 주소값이 담겨있다. 프로젝트명과 도메인을 제외한 주소값만 출력시켜라.
			-완료시 출력될 url - myPage?name=홍길동&age=20
			-사용할 메서드 lastIndexOf, substring
	*/
	var url = 'https://naver.com/myProject/myPage?name=홍길동&age=20';
	var a = '/';
	url = url.substring(url.lastIndexOf(a)+a.length);
	
	/*  
		실습3. url이라는 변수에 주소값이 담겨있다. 프로젝트명만 출력시켜라.
		-완료시 출력될 url - myProject
	*/
	
	var url = 'https://naver.com/myProject/myPage?name=홍길동&age=20';
	url = url.replace('https://','');
	url = url.replace('http://','');
	var slashArrUrl = url.split('/');
	url = slashArrUrl[1];
	
	
	url = url.replace('https://','');
	url = url.replace('http://','');
	var a = '/'
	var aI = url.indexOf(a);
	var aLi = url.lastIndexOf(a);
	url = url.substring(aI+a.length,aLi);
	
</script>
</head>
<body>

</body>
</html>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문자열 객체 실습 2</title>
<script type="text/javascript">
	/*  
		실습4. location의 객체를 활용하여 주소값을 가져오고 해당 주소값에 담긴 기능의 명칭을 출력하여라.
		(주소의 패턴 http://도메인/프로젝트/기능/페이지)
		도메인, 프로젝트명 고정
	*/
	
	//split
	var url = location.href;
	var a = '/';
	url = url.replace('http://'+location.host+a,'')
			.replace('https://'+location.host+a,'');
	
	var urlArr = url.split(a);
	url = urlArr[1];
	
	//substring
	var url = location.href;
	var a = '/';
	url= url.replace('http://'+location.host+a,'')
			.replace('https://'+location.host+a,'');
	url= url.substring(url.indexOf(a)+a.length, url.lastIndexOf(a))
	
	//substring2
	var url = location.href;
	var proName = 'javascriptEx06-0323';
	url= url.replace('https://'+location.host+'/','');
	url= url.replace('http://'+location.host+'/','');
	url= url.replace(proName+'/','');
	
	var len = url.indexOf('/');
	url = url.substring(0, len);
	console.log(url);
	
	
</script>
</head>
<body>

</body>
</html>

브라우저 객체 모델

window 객체

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>윈도우 객체</title>
<script type="text/javascript">
	//open
	window.open('https://naver.com','네이버','width=350,height=400, left=50, top=10, scrollbars=no');

	/*  
		setInterval() - 일정 시간 마다 함수를 실행시키는 메서드
		clearInterval() - 일정 시간 마다 실행되는 함수를 종료시키는 메서드
	*/
	
	var i = 0;
	var interval = setInterval(function(){
		console.log(i);
		if(i>10){
			clearInterval(interval);
		}
		i++;
	},3000);
    
    /*  
		setTimeout - 일정 시간이 지나면 코드를 실행하고 종료하는 메서드
	*/
	
	setTimeout(function(){
		console.log('3초 후 실행');		
	}, 3000);
	
</script>
</head>
<body>

</body>
</html>

 

 

open 메서드로 새 창을 생성한 모습

 

popupEx01.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>윈도우 객체 활용 팝업 실습</title>
<script type="text/javascript">
	/*
		실습5. 
			1.아래의 popupOpen 버튼 클릭시 팝업을 띄우시오.
			2.popupCall.html에서 팝업 닫기 버튼을 눌렀을 경우 팝업을 닫도록 하시오.
	*/
</script>

</head>
<body>
<button type="button" id="popupOpen">팝업띄우기</button>

<script type="text/javascript">
var popupOpen = document.getElementById('popupOpen');
popupOpen.addEventListener('click',function(){
	window.open('./popupCall.html','팝업창','width=400,height=600,left=50,top=50,scrollbars=no')
});
</script>

</body>
</html>

popupCall.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>띄운 팝업</title>
</head>
<body>
<button type="button" id="popupClose">팝업 닫기</button>
<script type="text/javascript">
	var popupClose = document.getElementById('popupClose');
	popupClose.addEventListener('click', function() {
		window.close();
	} )
</script>
</body>
</html>

setInterval메서드와 clearInterval메서드

 

 

setTimeout메서드. (자동으로 종료되기 때문에 clearTimeout은 잘 쓰지 않음)

 


DOM객체

DOM (Document Object Model) ①

DOM (Document Object Model) ② - event / 유효성검사

DOM (Document Object Model) ③ - style

 

 

location 객체 / history 객체

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>location / history 객체</title>
<script type="text/javascript">
	/*  
		<location>
		window 객체에 포함된 객체이며 url 주소에 대한 정보가 담겨있다.
		location.href - 주소값을 가지고 오거나 해당 주소로 이동시킨다.
		location.reload() - 현재 페이지를 갱신한다.
		
		<history>
		window 객체에 포함된 객체이며, 방문자의 이동 정보를 가지고있 다.
		history.back() - 이전 페이지로 이동
		history.go(숫자) - 인수값 만큼 현재 페이지 기준으로 방문 페이지 이동
		
	*/	
	
</script>

</head>
<body>

</body>
</html>

 

 

screen객체

 

screen과 client/offset의 속성값은 차이가 있다.

 

navigator 객체

 


javascript cookies

https://www.w3schools.com/js/js_cookies.asp

 

popupEx01.html에 쿠키추가

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>윈도우 객체 활용 팝업 실습</title>
<script type="text/javascript">
	/*
		실습5. 
			1.아래의 popupOpen 버튼 클릭시 팝업을 띄우시오.
			2.popupCall.html에서 팝업 닫기 버튼을 눌렀을 경우 팝업을 닫도록 하시오.
	*/
</script>

</head>
<body>
<button type="button" id="popupOpen">팝업띄우기</button>

<script type="text/javascript">

	var popupOpen = document.getElementById('popupOpen');
	popupOpen.addEventListener('click',function(){
		var cName = getCookie('popupCheck')
		if(cName != 'Y'){
			window.open('./popupCall.html','팝업창','width=400,height=600,left=20,top=20,scrollbars=no');
		}		
	});

	function getCookie(cname) {
		  var name = cname + "=";
		  var decodedCookie = decodeURIComponent(document.cookie);
		  var ca = decodedCookie.split(';');
		  for(var i = 0; i <ca.length; i++) {
		    var c = ca[i];
		    while (c.charAt(0) == ' ') {
		      c = c.substring(1);
		    }
		    if (c.indexOf(name) == 0) {
		      return c.substring(name.length, c.length);
		    }
		  }
		  return "";
		};

</script>

</body>
</html>

popupCall.html에 쿠키추가

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키를 활용하여 아이디 저장하기</title>
</head>
<body>
	<!--  
		실습6. 아이디 입력 후 '아이디 저장하기' 버튼 클릭시 쿠키로 아이디를 저장하고 새로고침 이후에도 아이디가 노출되도록 하시오.
	-->
	아이디 : <input type="text" id="userId" placeholder="아이디 입력">
	<button type="button" id="idSave">아이디 저장하기</button>
	
<script type="text/javascript">
	function setCookie(cname, cvalue, exdays) {
		  var d = new Date();
		  d.setTime(d.getTime() + (exdays*24*60*60*1000));
		  var expires = "expires="+ d.toUTCString();
		  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
		};
	
	function getCookie(cname) {
		  var name = cname + "=";
		  var decodedCookie = decodeURIComponent(document.cookie);
		  var ca = decodedCookie.split(';');
		  for(var i = 0; i <ca.length; i++) {
		    var c = ca[i];
		    while (c.charAt(0) == ' ') {
		      c = c.substring(1);
		    }
		    if (c.indexOf(name) == 0) {
		      return c.substring(name.length, c.length);
		    }
		  }
		  return "";
		};




	var idSave = document.getElementById('idSave');

	var savedId = '';
	
	idSave.addEventListener('click', function() {
		var userId = document.getElementById('userId');
		var userIdValue = userId.value;
		if(userIdValue != '' && userIdValue != undefined ){
			setCookie('userId',userIdValue,1);
		}		
	});
	
	var getUserId = getCookie('userId');
	if(getUserId != ''){
		var userId = document.getElementById('userId');
		userId.value = getUserId;
	};
	
	
</script>

</body>
</html>

input box value cookie

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키를 활용하여 아이디 저장하기</title>
</head>
<body>
	<!--  
		실습6. 아이디 입력 후 '아이디 저장하기' 버튼 클릭시 쿠키로 아이디를 저장하고 새로고침 이후에도 아이디가 노출되도록 하시오.
	-->
	아이디 : <input type="text" id="userId" placeholder="아이디 입력">
	<button type="button" id="idSave">아이디 저장하기</button>
	
<script type="text/javascript">
	function setCookie(cname, cvalue, exdays) {
		  var d = new Date();
		  d.setTime(d.getTime() + (exdays*24*60*60*1000));
		  var expires = "expires="+ d.toUTCString();
		  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
		};
	
	function getCookie(cname) {
		  var name = cname + "=";
		  var decodedCookie = decodeURIComponent(document.cookie);
		  var ca = decodedCookie.split(';');
		  for(var i = 0; i <ca.length; i++) {
		    var c = ca[i];
		    while (c.charAt(0) == ' ') {
		      c = c.substring(1);
		    }
		    if (c.indexOf(name) == 0) {
		      return c.substring(name.length, c.length);
		    }
		  }
		  return "";
		};




	var idSave = document.getElementById('idSave');

	var savedId = '';
	
	idSave.addEventListener('click', function() {
		var userId = document.getElementById('userId');
		var userIdValue = userId.value;
		if(userIdValue != '' && userIdValue != undefined ){
			setCookie('userId',userIdValue,1);
		}		
	});
	
	var getUserId = getCookie('userId');
	if(getUserId != ''){
		var userId = document.getElementById('userId');
		userId.value = getUserId;
	};
	
	
</script>

</body>
</html>

Date 객체와 날짜 관련 메서드


문자열 객체의 메서드 및 속성




 

문서 객체 모델 style

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서 객체 모델 style 다루기</title>
<script type="text/javascript">
	/*  
		dom style : style이라는 속성에 들어간 css 속성을 사용할 수 있다.	
	*/
</script>
</head>
<body>
	<input type = "text" name = "memberName" id = "memberName" />
	<button type = "button" id = "goStyle">스타일 주기</button>
	
	
	
	<script type="text/javascript">
		//memberName 아이디 input 박스 테두리와 색상 변경하는 토글기능
		var goStyle = document.getElementById('goStyle');
		goStyle.addEventListener('click', function() {
		    var memberName = document.getElementById('memberName');
		    // rgb(255, 0, 153) <- 핫핑크
		    console.log(memberName.style.color);
		    console.log(memberName.style.border);
		    if(memberName.style.color == 'rgb(255, 0, 153)'){
		    	memberName.style.border = '1px solid #000000';
				memberName.style.color = '#000000';
		    }else{
				memberName.style.border = '1px solid #ff0099';
				memberName.style.color = '#ff0099';
		    }
		   
		});
	</script>
	
	<br><br>
	
	<button type = "button" id = "innerBtn">html 삽입</button>
	<div id = "innerHtmlTag">
		<h1>버튼을 클릭해주세요.</h1>
	</div>
	<script type="text/javascript">
		//memberName 아이디 input 박스 테두리와 색상 변경하는 토글기능
		var innerBtn = document.getElementById('innerBtn');
		innerBtn.addEventListener('click', function() {
			var innerHtmlTag = document.getElementById('innerHtmlTag');
			console.log(innerHtmlTag.innerHTML);
			var tag = '';
			tag += '<h1 style = "color: #ff0099">안녕하세요.</h1>'
			tag += '<span>한국스마트정보교육원에 오신 것을 환영합니다.</span>'
			innerHtmlTag.innerHTML = tag;
		});
	</script>
	
	<br><br>
	
	<img src = "./resource/img/123.gif" id = "imageEvTarget">
	<button type="button" id="imageChange">이미지 바꾸기</button>
	
	<script type="text/javascript">
		var index = 0;
		var imageChange = document.getElementById('imageChange');
		imageChange.addEventListener('click', function() {
			var imageEvTarget = document.getElementById('imageEvTarget');
		    
		    if(index == 0){
		    	imageEvTarget.src = './resource/img/unnamed.jpg';
		    	index ++;
		    }else{
		    	imageEvTarget.src = './resource/img/123.gif';
		    	index = 0;
		    }
		});
	</script>
</body>
</html>

문서 객체 모델 style

문서 객체 모델 style

 


 


 


문서 객체 모델 - style 실습 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서 객체 모델 - style</title>
</head>
<body id = "body">
	<!--  
		실습 1. 아래의 버튼 클릭시 body의 배경 색상을 검정 또 한번 클릭시 흰색으로 바뀌게 스크립트 코드를 작성하시오.
	-->
	<button type="button" id= "backColorChange" >배경색 변환 </button>
	
	<script type="text/javascript">
		var backColorChange = document.getElementById('backColorChange');
		var ck = 0;
		backColorChange.addEventListener('click',function() {
		    var body = document.getElementById('body');
		    
		    if(ck == 0){
		    	body.style.backgroundColor = "#000000"
		    	ck++;
		    }
		    else{
		        body.style.backgroundColor = "#ffffff"
		        ck=0;
		    }		
		});
		
	</script>
</body>
</html>

문서 객체 모델 - 생성

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서 객체 모델 - 생성</title>
</head>
<body>
	<!--  
		실습 2. 아래의 버튼 클릭시 1~10까지의 행의 값을 가진 테이블을 완성시키시오.
	-->
	
	<button type="button" id="tableCreate">테이블 생성</button>
	
	<table>
		<tbody>
			<tr>
				<td>버튼을 클릭해주세요.</td>
			</tr>
		</tbody>
	</table>
	
	<script type="text/javascript">
		
		var tableCreate = document.getElementById('tableCreate');
		tableCreate.addEventListener('click', function () {
			var table = document.getElementsByTagName('table')
			var tbody = table[0].tBodies[0]
			var t = '';
			for(var i = 1; i <= 10 ; i++){
				t += '<tr><td>"+i+"</td></tr>'
			}
			tbody.innerHTML = t;

		})
	</script>
</body>
</html>

 

 


문서 객체 모델 style : display

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서 객체 모델 - style : display</title>
</head>
<body>
	<button type="button" id="displayBtn">보이게하기</button>
	<div class="view">
		<h1>안녕하세요.</h1>
	</div>
	<div class="view" style="display: none;">
		<h1>한국스마트정보교육원</h1>
	</div>
	
	<script type="text/javascript">
		var displayBtn = document.getElementById('displayBtn');
		displayBtn.addEventListener('click', function () {
			var view = document.getElementsByClassName('view');
			for(var i = 0 ; i <view.length ; i++){
				if (view[i].style.display == 'none' ){
					view[i].style.display = 'block';
				}else{
					view[i].style.display = 'none';
				}
			}
		});
	</script>	
</body>
</html>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서 객체 모델 - style : display</title>
</head>
<body>
	
	<button type="button" class="btn" value="0">버튼1</button>
	<button type="button" class="btn" value="1">버튼2</button>
	
	<div class="displayDiv">
		<h1>뷰1</h1>
	</div>
	<div class="displayDiv" style="display: none;">
		<h1>뷰2</h1>
	</div>
	
	<script type="text/javascript">
		var btn = document.getElementsByClassName('btn');
		for(var i = 0 ; i <btn.length ; i++){
			btn[i].addEventListener('click', function () {
				console.log(this.value);
				var displayDiv = document.getElementsByClassName('displayDiv');
				for(var i = 0; i <displayDiv.length ; i++){
					if(this.value == "1"){
						this.value='0';
						displayDiv[i].style.display = 'none';
					}else{
						this.value= '1';
						displayDiv[i].style.display = 'block';
					}
				}
			})
		}
	</script> 
		
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서 객체 모델 - style : display</title>
</head>
<body>

	<button type="button" class="btn" value="0">버튼1</button>
	<button type="button" class="btn" value="1">버튼2</button>
	
	<div id="displayDiv01">
		<h1>뷰1</h1>
	</div>
	<div id="displayDiv02" style="display: none;">
		<h1>뷰2</h1>
	</div>
	
	<script type="text/javascript">
		var btn = document.getElementsByClassName('btn');
		for(var i = 0 ; i <btn.length ; i++){
			btn[i].addEventListener('click', function () {
				//버튼의 value 값을 가지고 온다.
				//버튼의 value 값은 index와 맞추어 작업했다.
				console.log(this.value);
				var displayDiv02 = document.getElementById('displayDiv01')
				var displayDiv02 = document.getElementById('displayDiv02')
			if(this.value == '0'){
				displayDiv01.style.display = 'block';
				displayDiv02.style.display = 'none';
			}else{
				displayDiv01.style.display = 'none';
				displayDiv02.style.display = 'block';
			}
			})
		}
	</script>
	
	
</body>
</html>

탭버튼 만들기 실습

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>탭버튼 만들기</title>
</head>
<body>
	<!-- 
		실습3. 3개의 버튼과 3개의 div객체가 있다.
		각각 버튼을 클릭시 div객체의 인덱스와 버튼의 인덱스가 일치하는
		div객체만 display 되게 하여라. 
	 -->
	 <button type="button" class="displayBtn" value="0">공지사항</button>
	 <button type="button" class="displayBtn" value="1">자유게시판</button>
	 <button type="button" class="displayBtn" value="2">뉴스</button>
	 <div id="notice">
	 	<div>1 '비상' 14차례 언급한 문 대통령…"이것저것 따질 계제 아니다"</div>
		<div>2 "한선교, 계획된 뒤통수"…흠모한 선배라던 황교안과 무슨일</div>
		<div>3 이인영 "추경 못하면 역사의 죄인" 심재철 "국민 손에 돈 쥐어줄 궁리만 해"</div>
		<div>4 文대통령 "비상경제시국"…개학 2주 연기로 가닥</div> 
	 </div>
	 <div id="free" style="display: none;">
	 	<div>5 [단독] 황교안 격노·사천 비판에 한선교 “젊음과 전문성에 치중”</div>
		<div>6 황교안-한선교 공천 갈등 '폭발'…통합당, 해법 찾기 고심</div>
		<div>7 이해찬의 '내로남불'</div>
		<div>8 심상정 "꼼수가 꼼수 낳는 참담한 상황…어려워도 원</div>
	 </div>
	 <div id="news" style="display: none;">
	 	<div>[코로나19] “팬데믹도 막을 수 없다”…삼성·SK하이닉스 신공장 준비 ‘이상 無’ </div>
		<div>국제유가 반토막인데 휘발유 가격은 여전히 1500원대…왜? 포토 </div>
		<div>다중주택의 필로티 주차장 층수에서 제외된다 포토 한국일보</div>
		<div>대구·경북 가던 특별공급 마스크, 수도권 약국에 푼다(종합) 포토 </div>
	 </div>
	 
	 
	 <script type="text/javascript">
	 	var displayBtn = document.getElementsByClassName('displayBtn');
	 	for(var i = 0 ; i <displayBtn.length ; i++){
	 		displayBtn[i].addEventListener('click', function() {
	 			var notice = document.getElementById('notice');
	 			var free = document.getElementById('free');
	 			var news = document.getElementById('news');
	 			
	 			if(this.value == '0'){
	 				notice.style.display = 'block';
	 				free.style.display = 'none';
	 				news.style.display = 'none';
	 				
		 		}else if(this.value =='1'){
		 			notice.style.display = 'none';
	 				free.style.display = 'block';
	 				news.style.display = 'none';
		 			
		 		}else if(this.value =='2'){
		 			notice.style.display = 'none';
	 				free.style.display = 'none';
	 				news.style.display = 'block';
		 		}	
			})
	 	};
	 	
	 </script>
</body>
</html>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
	<input type="number"> X <input type="number">
	<button type="button" id="action">계산하기</button>
	<div id="result"></div>
	<!--  
		실습 4. 아이디 action 버튼 클릭시 input의 숫자값을 곱하여
		아이디 result에 결과값을 뿌려주시오.
		(계산값이 50 이상일 경우 텍스트 색상 빨강, 49 이하일 경우 검정) 
	-->

	<script type="text/javascript">
		
		var action = document.getElementById('action');
		
		
		action.addEventListener('click', function() {
			var input = document.getElementsByTagName('input');
			var result = document.getElementById('result');
			var t = parseInt(input[0].value)*parseInt(input[1].value);
			
			if(t >= 50 ){
				result.style.color = '#FF0000';
			}else {
				result.style.color = '#000000';
			}
			
			result.innerHTML = t;
		
		})
		
	</script>
</body>
</html>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!--  
		실습 5. 상품 가격은 아이디 price에 명시되어있다.
		수량을 선택할 경우 아이디 result에 총 상품가격을 상품가격 x 수량만큼 계산하여 적용하라.
		(아이디 price X 아이디 num = 아이디 result)
	-->
	
	상품가격 : <input type="number" id="price" value = "5000" readonly="readonly">
	상품수량 :
	<select id="num">
		<option value="0"> :: 수량 선택 ::</option>
		<option value="1">1</option>
		<option value="2">2</option>
		<option value="3">3</option>
		<option value="4">4</option>
	</select>
	<div>
	총 계산 금액 : <input type="text" id="result" value="" readonly="readonly">
	</div>
	
	<script type="text/javascript">

		var num = document.getElementById('num');
		
		num.addEventListener('change', function() {
			var price =  document.getElementById('price');
			var result = document.getElementById('result');
			result.value = Number(this.value) * parseInt(price.value);
		})
			
	
				
	</script>
</body>
</html>

 

 

이벤트

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>이벤트 종류</title>
<script type="text/javascript">
	/*  
		이벤트 : 사용자가 특정 행위를 하였을 때 발동시키는 이벤트
		이벤트 사용하기 : on이라는 속성 , document.addEventListener 메서드 사용
			- click : 사용자가 어떤 특정 객체를 클릭했을 경우	
	*/
</script>
</head>
<body>
	<button type="button" id="myBtn">클릭이벤트</button>
	<input type="text" name="memberName" onkeypress = "myKeypress(this);">
	<select id="mySelect">
		<option value=""> :: 선택 :: </option>
		<option value="전주"> 전주 </option>
		<option value="군산"> 군산 </option>
	</select>
	
	<input type="text" name="memberAge" id="myKeydown">
	
	<script type="text/javascript">
		var myBtn = document.getElementById('myBtn');
		myBtn.addEventListener('click',function(){
			console.log('클릭이벤트 발동');
		})
		
		var myKeypress = function(obj) {
			console.log('키보드이벤트 발동',obj.value);
		}
		
		var mySelect = document.getElementById('mySelect');
		mySelect.addEventListener('change', function() {
			console.log('체인지 이벤트 발동', this.value);
		})
		
		var myKeydown = document.getElementById('myKeydown');
		myKeydown.addEventListener('keydown', function() {
			console.log('키다운 이벤트 발동', this.value);
			if(this.value.length > 10){
				alert('10글자 이하로 입력해주세요.');
				return;
			}
		}) 
		/* 위와 같은 식.
		var myKeydown = document.getElementById('myKeydown');
		var keyEv = function() {
			console.log('키다운 이벤트 발동', this.value);
			if(this.value.length > 10){
				alert('10글자 이하로 입력해주세요.');
				return;
			}
		};
		myKeydown.addEventListener('keydown', keyEv); */
		
	</script>
	
</body>
</html>

 

 


유효성 검사

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>유효성 검사</title>
</head>
<body>
	<form id = "memberForm" action="./dom03.html" method ="post">
		<input type = "text" name="memberName">
		<input type = "text" name="memberAge">
		<button type="button" id="memberInfoCheck">전송</button>
	</form>
	
	<script type="text/javascript">
		var evBtn = document.getElementById('memberInfoCheck');
		evBtn.addEventListener('click',function(){
			var form = document.getElementById('memberForm');
			var memberName = form.memberName;
			var memberAge = form.memberAge;
			if(memberName.value == ''){
				alert('회원명을 입력하세요.');
				memberName.focus();
				return; //함수를 종료하기 위한 return.
			}
			if(memberAge.value == ''){
				alert('회원 나이를 입력하세요.');
				memberAge.focus();
				return; //함수를 종료하기 위한 return.
			}
			form.submit();
		});
	</script>
</body>
</html>

 

로그인 유효성 검사 예제

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 유효성 검사</title>
</head>
<body>
	<!-- 
		실습 5. 아이디와 패스워드를 입력하는 input 태그를 만들고
		로그인 버튼을 클릭시 아이디와 패스워드를 체크하는 유효성 검사 코드를 작성하여라.
		아이디 : input type text
		패스워드 : input type password
	 -->
	 
	 <form action="./domEx02.html" method="post" id="logForm">
	 	ID	:	<input type ="text" name="id">
	 	PW	:	<input type ="password" name="pw">
	 	<button type ="button" id="logBtn"> 로그인 </button>
	 </form>
	 
	 <script type="text/javascript">
	 	
	 	var logBtn = document.getElementById('logBtn');
	 	logBtn.addEventListener('click', function() {
		 	var logForm = document.getElementById('logForm');
		 	var id = logForm.id;
		 	var pw = logForm.pw;
		 	
			if(id.value == ''){
				alert('ID를 입력하세요');
				id.focus();
				return;
			}
			if(pw.value == ''){
				alert('PW를 입력하세요');
				pw.focus();
				return;
			}
			logForm.submit();
		});
	 
	 </script>
</body>
</html>

회원가입 유효성 검사 실습

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입 유효성 검사</title>
</head>
<body>
	<!-- 
		실습6. 회원가입에 관련된 폼을 작성하고 유효성 검사를 하여라.
		회원가입에 필요한 필드
		- 이름
		- 아이디
		- 패스워드 -> 패스워드
		- 패스워드 확인 -> 패스워드
		- 이메일
		- 생년월일
		- 성별 -> 라디오 박스
		- 휴대전화번호
		- 취미 3개 (게임, 프로그래밍, 영화) 1개 이상은 무조건 체크 -> 체크박스
				
	 -->
	 
	 <form id="joinForm" action="./회원가입유효성검사.html" method="post">
	 	이름 : <input type="text" name="uName"><br/>
	 	아이디 : <input type="text" name="uId"><br/>
	 	패스워드 : <input type="password" name="uPw"><br/>
	 	패스워드 확인 :<input type="password" name="uPwCon"><br/>
	 	이메일 : <input type="text" name="uEmail"><br/>
	 	생년월일 : <input type="number" name="uBirth"><br/>
	 	성별<br/>
	 	남<input type="radio" name="uGender" value="남" >
	 	여<input type="radio" name="uGender" value="여" ><br/>
	 	휴대전화번호 : <input type="number" name="uTel"><br/>
	 	취미<br/>
	 	게임<input type="checkbox" name="uHobby" value="게임">
	 	프로그래밍<input type="checkbox" name="uHobby" value="프로그래밍">
	 	영화<input type="checkbox" name="uHobby" value="영화">
	 	<button type="button" id="joinBtn"> 회원가입 </button>
	 </form>
	 
	 <script type="text/javascript">
	 var joinBtn = document.getElementById('joinBtn');
     	joinBtn.addEventListener('click', function(){
        	var joinForm = document.getElementById('joinForm');
      	  	var uName = joinForm.uName;
        	var uId = joinForm.uId;
		 	var uPw = joinForm.uPw;
		 	var uPwCon = joinForm.uPwCon;
		 	var uEmail = joinForm.uEmail;
		 	var uBirth = joinForm.uBirth;
		 	var uGender = joinForm.uGender;
		 	var uTel = joinForm.uTel;
		 	var uHobby = joinForm.uHobby;

		 	if(uName.value == ''){
		 		alert('사용자 이름을 입력해주세요.');
		 		uName.focus();
		 		return;
		 	}
		 	
		 	if(uId.value == ''){
		 		alert('사용자 아이디를 입력해주세요.');
		 		uId.focus();
		 		return;
		 	}
		 	
		 	if(uPw.value == ''){
		 		alert('사용자 패스워드를 입력해주세요.');
		 		uPw.focus();
		 		return;
		 	}
		 	
		 	if(uPwCon.value == ''){
		 		alert('사용자 패스워드 확인을 입력해주세요.');
		 		uPwCon.focus();
		 		return;
		 	}
		 	
		 	if(uPw.value != uPwCon.value){
		 		 alert('패스워드가 일치하지 않습니다. 다시 확인해주세요.')
		 		uPwCon.value = null;
		 		uPw.value = null;
		 		uPw.focus();
		 		    return;}
		 	
		 	if(uEmail.value == ''){
		 		alert('사용자 이메일을 입력해주세요.');
		 		uEmail.focus();
		 		return;
		 	}
		 	
		 	if(uBirth.value == 0){
		 		alert('사용자 생년월일을 입력해주세요.');
		 		uBirth.focus();
		 		return;
		 	}
		 	
		 	var re = 0;
		 	
		 	for(var i = 0; i < uGender.length ; i++){
		 		if(uGender[i].checked){
		 			re++
		 			}
		 		};
		 	if (re <1){
		 		alert('사용자 성별을 선택해주세요.');
		 		uGender[0].focus();
		 		return;
		 		}
		 
		 	
		 	if(uTel.value == ''){
		 		alert('사용자 휴대전화 번호를 입력해주세요.');
		 		uTel.focus();
		 		return;
		 	}
		 	
			re = 0;
			for(var i = 0 ; i <uHobby.length ; i++){
				if(uHobby[i].checked){
					re++;
				}
			}
			if(re<1){
				alert('취미를 하나 이상 선택해주세요.');
				uHobby[0].focus();
				return;
			}
		 	
		 	joinForm.submit();
	 	});
	 	
	 </script>
</body>
</html>

객체 생성자 함수

	/*
		객체 생성자 함수는 new 연산자로 메모리를 생성하여 활용한다.
		또한 함수내에서 this 키워드도 활용이 가능하다.
		****************중요****************
		this 키워드로 속성 및 메서드 작업시 외부에서 접근이 가능하다
	*/
	//this 키워드 없이 함수 작업
	var myFn1 = function(){
		//함수 내부에 var 라는 키워드로 변수 선언시 외부에서 접근 불가
		var name = '홍길동';
		//this 키워드로 변수 선언시 외부에서 접근이 가능하다.
		this.age = 20;
	}
	var my = new myFn1();
	//new 연산자를 통하여 메모리 할당시 객체(object) 형태로 메모리 할당
	console.log(my);

new 연산자를 통해 메모리 할당시 객체(object) 형태로 메모리 할당.

** var 키워드로 선언한 변수 name에는 접근이 불가능하다.

** this 키워드로 선언한 변수 age 에는 접근이 가능하다.

 

 


prototype

	var MyFn1 = function(){
		//함수 내부에 var 라는 키워드로 변수 선언시 외부에서 접근 불가
		var name = '홍길동';
		//this 키워드로 변수 선언시 외부에서 접근이 가능하다.
		this.age = 20;
		this.fn = function(){
			console.log('메서드 호출');
		}
		this.setName = function(setName){
			name = setName;
		}
		this.getName = function () {
			return name;
		}
	}
	
	//prototype으로 객체를 생성할 때 함수를 등록하는 기본형 (확장시킬 때 이용)
	MyFn1.prototype.setAge = function(changeAge){
		this.age = changeAge;
	}
	MyFn1.prototype.getAge = function(){
		return this.age;
	}

프로토타입을 사용하여 등록한 함수는 원형(객체 생성자함수)에서 생성된 객체를 공유할 수 있다.


	/*
		실습 3. fn함수와 obj객체가 있다. fn함수를 실행할 때 obj를 인수로 넘기고
		fn함수 실행시 obj 내부에 있는 n1, n2 속성값을 합산시켜
		결과값을 반환하여라.
	*/
	
	var obj = {n1 : 10, n2 : 20};
	var fn = function (o) {
		var result = o.n1 + o.n2;
		return result;		
	}
	
	var result = fn(obj);
	console.log(result);
	

 


문서객체모델

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서객체모델</title>
<script type="text/javascript">
	/*
		dom -> 문서객체모델 : Document Object Model
		문서의 정보가 담겨있다.
		document 라는 변수명으로 문서에 접근할 수 있다.
	*/
</script>
</head>
<body>

</body>
</html>

 


문서 객체 모델

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서객체모델</title>
<script type="text/javascript">
	/*
		dom -> 문서객체모델 : Document Object Model
		문서의 정보가 담겨있다.
		document 라는 변수명으로 문서에 접근할 수 있다.
		
		<< 객체 검색 메서드 >>
			- id 검색		: document.getElementById('아이디명');
			- tag명 검색	: document.getElementsByTagName('태그명');
			- class명 검색	: document.getElementsByClassName ('클래스명');
			- 속성 name 값 검색 : document.네임명 (**name이라는 속성은 form객체에만 적용**)
		
		//폼 하위 접근
		ex) document.myForm.myName;
			document.getElementById('myForm').myName;
			
		//폼 객체에 접근시 폼 객체의 속성에 접근할 수 있다.
		ex)	var myName = document.myForm.myName;
			console.log(myName.value);
		
		
		//태그 검색과 삽입
		innerHTML, innerText의 속성으로 접근 및 요소값 변경 가능
		ex)	var myTag = document.getElementById('myTag');
			myTag.innerHTML = '<h2>한국스마트정보교육원</h2>';
		
		//다중 객체 접근하여 반복문 풀기
		var checkArray = document.getElementsByClassName('myCheck');
		
		for(var i = 0; i <checkArray.length ; i++){
    		checkArray[i].checked = true;
    	}
		
		//체크된 체크박스의 value만 콘솔에 출력하기
		for(var i = 0; i <checkArray.length ; i++){
    		if(checkArray[i].checked){
                console.log(checkArray[i].value);
            }
    	}
		
		//form 태그에 포커스 잡기
		//마지막에 선택된 객체에 속성 focus()로 접근 가능
		객체.focus() : 해당 객체에 커서 이동하기
		
        //form 객체 속성 변경 및 submit 하기
		var myForm = document.getElementById('myForm');
		myForm.action = './';
		myForm.method = 'post';
		myForm.submit(); // action속성으로 전송
		
	*/
	
	console.log('상위에서 객체 검색', document.getElementById('myForm'));
</script>
</head>
<body>

	<form id="myForm" name = "myForm">
		<input type = "text" name = "myName">
		<input type = "text" name = "myAge">
		<input type = "checkbox" name = "add" value = "전주" class = "myCheck" checked= "checked">
		<input type = "checkbox" name = "add" value = "군산" class = "myCheck">
		<input type = "checkbox" name = "add" value = "익산" class = "myCheck">
		<button type = "button" id="myBtn">버튼</button>
	</form>
	
	<div id = "myTag">
		<h1>안녕하세요.</h1>
	</div>
	
	<script type="text/javascript">
		console.log('하위에서 객체 검색', document.getElementById('myForm'));
	</script>
</body>
</html>

문서를 읽는 순서는 위에서 아래 방향이기 때문에 script의 위치는 html의 하단에 위치해야 한다.


객체 검색 메서드

 


document.getElementById();를 통해 form에 접근하여 value를 변경할 수 있다.



document.getElementById();를 통해 <div> 태그에 접근하여

innerHTML을 사용해 html을 변경할 수 있다.

 


document.getElementByClassName();를 통해 객체에 접근하여 객체 내부의 값을 array로 get 가능. array를 for 반복문으로 값을 추출, 변경할 수 있다.


버튼 클릭시 함수를 호출하는 이벤트 발생

var myFunction = function() { 
	console.log('함수호출')
}

 


<html>
<body>

	<form id="myForm" name = "myForm">
		<input type = "text" name = "myName">
		<input type = "text" name = "myAge">
		<input type = "checkbox" name = "add" value = "전주" class = "myCheck" checked= "checked">
		<input type = "checkbox" name = "add" value = "군산" class = "myCheck">
		<input type = "checkbox" name = "add" value = "익산" class = "myCheck">
		<button type = "button" id="myBtn" onclick="myFunction();">버튼</button>
	</form>
	
	<div id = "myTag">
		<h1>안녕하세요.</h1>
	</div>
	

</body>
	<script type="text/javascript">
		console.log('하위에서 객체 검색', document.getElementById('myForm'));
	
		var myFunction = function() {
			console.log('함수호출')	
		var myForm = document.getElementById('myForm');
		console.log('myName : ', myForm.myName.value);
		console.log('myAge : ', myForm.myAge.value);
		var checkArray = document.getElementsByClassName('myCheck');
		for(var i = 0; i <checkArray.length ; i++){
    		if(checkArray[i].checked){
                console.log(checkArray[i].value);
    		}
		}
	}
	</script>
</html>


문서 객체 모델 예제

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서 객체 모델</title>

</head>
<body>
	<form action="./domEx01.html" method="get" id = "mF"> 
		<input type = "text" name="memberName">
		<input type = "number" name="memberAge">
		<button type = "button" onclick="v();" >전송하기</button>
	</form>
	<script type="text/javascript">
		/*  
			실습 4.위의 전송하기 버튼 클릭시 input 태그의 값을 콘솔창에 출력시키고 submit 시키시오. 
		*/
		var mF = document.getElementById('mF');
		var v = function() {
			console.log(mF.memberName.value);
			console.log(mF.memberAge.value);
			mF.submit();			
		}
		
		
		
	</script>


</body>
</html>
	/*
		실습 1. 아래와 같이 선언된 객체가있다. 해당 객체에는
		name, memberArray, filter 라는 속성이 있으며
		name 은 문자열 memberArray는 배열, filter는 함수값을 가지고 있다.
		filter 함수(메서드)를 실행시키고 인수값에 들어간 사람의 정보와 
		memberArray의 정보에 일치하는 사람의 명을 name이라는 속성에 대입시키고 obj 라는 객체를 출력시켜라	
	*/

	var obj = {
			name : '',
			memberArray : ['홍길동','홍길순','이순신'],

			filter : function(name){
			 
				for(var i = 0 ; i< this.memberArray.length ; i++){
					if (this.memberArray[i] == name){
					this.name = name;
					}
				}
			}
	};
	obj.filter('입력명');
	console.log(obj);
	

 

memberArray 배열에 없는 이름을 입력했을 경우 :: obj.name에 대입되지 않음

 

memberArray배열에 존재하는 값을 입력했을 경우 :: obj.name에 대입됨.

 


	/*
		실습 2. myArray라는 배열이 있다. myFn함수를 실행시켜 myArray 배열의 값을 합산하여 총 합산값을 리턴하여 결과값을 출력시켜라.
	*/
	
	var myArray = [10,20,30,40,50];
	var myFn = function(){
		var result = 0;
		for(var i = 0 ; i < myArray.length ; i++){
			result += myArray[i];
		}
		return result;
	}
	console.log(myFn());

함수

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>함수</title>
<script type="text/javascript">
	/* 
		함수란?
		1. 코드를 저장하였다가 실행하거나 실행하여 결과값을 도출해내는 것.
		2. 함수 선언 : function 키워드를 사용.
		3. 기본 함수, 익명 함수
	*/
	
	//기본함수
	function myFn() {
		//alert('안녕하세요'); <<- window 객체에 포함된 함수.
		console.log('안녕하세요');
		var n1 = 10;
		var n2 = 20;
		console.log(n1*n2);
	}
	
	//함수실행
	myFn();
	
	//익명함수
	var myFn2 = function(){
		//함수 실행시 외부함수 실행
		myFn();
	}
	myFn2();
	
	
	var myFn3 = function(){
		//지역변수의 내부함수
		var myFn = function(){
			console.log('내부함수 실행');
		}
		myFn ();
		console.log('myFn3 실행');
	}
	myFn3();
	
	//재귀함수 호출 - 함수를 자기 자신 안에서 실행
	var num = 0;
	var myFn4 = function(){
		num++;
		//myFn4();
	}
	myFn4();
	console.log(num);
	
</script>

</head>
<body>

</body>
</html>

함수 실습

	/*  
		실습 7. 함수 fn을 실행하고, 이 함수의 내부함수인 subFn을 실행시켜 num 값이 50이 되도록 한 뒤 num값을 콘솔에 출력시켜라.
	*/
	
	var fn = function(){
		var num = 0;
		var subFn = function(){
			num = 50;
		}
		subFn();
		console.log(num);
	}
	fn();

 

/*  
		실습 8. 함수 fn2를 실행하고, 이 함수의 내부 함수인 subFn를 실행시켜
		num의 값이 10이 되도록 하고 num 값을 콘솔에 출력시켜라.
		반복문 사용
	*/
	
	var fn2 = function(){
		var num = 0;
		var subFn = function(){
			num++;
		}
		for(var i = 0; i <10 ; i++ ){
			subFn();
		}
		console.log(num);
	}
	fn2();

 

/*  
	실습 9. 함수 fn3에 인수 10,20을 넣어 실행시키고
	이 함수의 내부 함수인 subFn을 fn3의 매개변수로 받은 값을 넣어 실행시켜라.
	subFn 함수에서는 첫번째 매개변수 값 만큼 반복문을 돌리고
	반복문의 인덱스*2번째 매개변수 값을 콘솔창에 출력시켜라.
	(반복문 사용)
*/
	
	
	
	var fn3 = function(n1, n2){
		var subFn = function(sn1, sn2){
			for(var i = 0; i <sn1 ; i++){
				console.log(i * sn2);
			}
		}
		subFn(n1, n2);
	}
	fn3(10,20);

 

/*  
	실습 10. 함수 fn4는 구구단을 출력하기 위한 함수이다.
	fn4를 실행시키면서 삽입하는 인수값 기준으로 구구단을 출력하는 함수를 완성시켜라.
*/
	
var fn4 = function(n){
	for(var i=1; i <= 9; i++){
		console.log(n*i);
	}
}
fn4(8);
	

	//return : 데이터를 반환하거나 함수를 빠져나올 때 쓴다.
	var myFn5 = function(n){
		console.log('리턴확인1');
		if(n <5){
			return;
		}
		console.log('리턴확인2');
		if (n < 10){
			return;
		}
		console.log('리턴확인3');
	}
	myFn5(2);
	

 


//return : 데이터를 반환하기
	var myFn6 = function(n1,n2){
		return n1 * n2; 
	}
	var getData = myFn6(10, 20);
	console.log(getData);
	/*  
		실습 11. 아래의 배열값을 fn함수에서 매개변수로 받아 배열의 총 합산값을 리턴하여라.
	*/
	var arr = [10,20,30,40,50,60,70,80,90];
	var fn = function(nArr){//2. 매개변수 받기 : 함수를 실행하면서 배열울 인수값으로 넣어 실행했기 때문에 매개변수 값을 배열로 받을 수 있다.
		var re = 0;
		//3. 인수로 배열을 넣었기 때문에 매개변수 값은 배열이다.
		//배열의 속성인 length를 사용할 수 있다.
		for(var i = 0 ; i < nArr.length ; i++){
			re += nArr[i];
		}
		return re;	
	}
	//1. 함수 실행하면서 배열을 인수값에 넣어 실행하기
	console.log(fn(arr));
/*  
		실습 12. 아래 arr2 배열 값을 함수 fn2에서 매개변수로 받아 배열의 3의 배수값만 합산시켜 리턴하여라.
*/
	
	var arr2 = [2, 3, 5, 7, 9, 12, 13 , 14, 15];
	var re2 = 0;
	var fn2 = function(a){
		for(var i = 0; i < a.length ; i++){
			if(a[i] % 3 == 0 ){
				re2 += a[i];
			}
		}
		return re2;
		
	}
	console.log(fn2(arr2));

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>객체 + 함수</title>
<script type="text/javascript">
	/*  
		실습 13. 객체 obj에 속성 name과 메서드 myFn이 있다.
		name 속성의 값은 이순신이다.
		메서드 myFn을 실행했을 때 name 속성의 값이 홍길동으로 변환되게 하여라.
	*/
	
	var obj = {
		name : '이순신',
		myFn : function(){
			this.name = '홍길동';
		}
	}
	
		
	obj.myFn();
	
</script>
</head>
<body>

</body>
</html>


	/*  
		실습 14. 객체 obj2에 속성 name과 메서드 myFn이 있다.
		메서드 myFn 실행 시 인수값을 이름으로 넣어 name 값을 변경시켜라.
	*/
	
	var obj2 = {
			name : '이순신',
			myFn : function(name){
				this.name = name;
			}
		}
	
	obj2.myFn('변경명');


	/*  
	실습 15. 객체 obj3에 속성 arr(배열)과 num(숫자), 메서드 myFn이 있다.
	메서드 myFn 실행 시 arr 배열의 속성의 합산값을 num에 대입하여라.
	*/
	
	obj3 = {
		arr : [10,20,30,40,50,60,70,80,90],
		num : 0,
		myFn : function(){
			for(var i = 0 ; i < this.arr.length ; i++){
				this.num += this.arr[i];
			}			
		}
	}
	obj3.myFn();
	console.log(obj3.num);

 

'JavaScript' 카테고리의 다른 글

[JavaScript] DOM (Document Object Model) ①  (0) 2020.03.16
[JavaScript] 객체 + 함수 + 반복문 복습  (0) 2020.03.16
[JavaScript] 객체 Object  (0) 2020.03.10
[JavaScript] 배열 객체  (0) 2020.03.09

객체

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>객체</title>
<script type="text/javascript">
	/*  
		객체란?
		형체가 있는 대상, 메모리에 올라간 데이터
		- 기본 자료형 혹은 내장 객체의 값으로 변수 생성 후 데이터 삽입시 
		해당 자료형으로 활용할 수 있는 메서드, 속성이 생성된다.
		- 객체를 object라고 표현한다.
				
		개발자가 직접 객체 생성하기
		this
	*/
	
	//객체는 키와 값으로 이루어져 있다.
	//객체의 값은 문자, 숫자, 배열, 객체, 함수 등 모든 것을 포함할 수 있다.
	var obj = {
		myName : '홍길동',
        myArray : new Array(),
        myObj : {
        	add : '전주시',
        },
	};
	
	//객체 내의 배열에 값을 삽입 및 속성값 변경
	obj.myName = '이순신';
	obj.myArray.push('내 배열');
	
	
</script>
</head>
<body>

</body>
</html>

객체 생성 실습

1.

	/*  
		실습 1. obj 라는 변수에 name, age의 속성을 포함한 객체를 완성하여라
	*/
	
	var obj = {
			name : '브래들리',
			age : 20,
	};
	
	

2.

/* 
		실습 2. obj2라는 변수에 arr는 배열객체, myObj는 객체의 속성을 포함한 객체를 만들고
		arr는 '홍길동', '이순신' 값을 myObj는 name과 age 속성을 가지도록 하여라. 
	*/
	
	var obj2 = {
		arr : new Array('홍길동', '이순신'),
		myObj : {
			name : '크리스',
			age : 20,
		},
			
	};
	/* var obj2 = {
		arr : ['홍길동', '이순신'],
		myObj : {
			name : '크리스',
			age : 20,
		},
			
	}; */
	
	

3.

/*  
		실습 3. obj3라는 객체가 있다. 객체 obj3의 속성 중 
		arr라는 배열을 가지고 name이라는 속성의 값과 일치하는 값만 콘솔에 출력하여라
	*/
	
	var obj3 = {
			arr : ['홍길동','이순신'],
			name : '홍길동'		
	};
		
	for(var i = 0 ; i < obj3.arr.length ; i++){
		if(obj3.arr[i] == obj3.name){
			console.log(obj3.arr[i]);
		}
	};
	

4.

/*  
		실습 4. 객체 obj4에  속성 number 와 numArr이 있다.
		number의 값은 10이고 numArr은 배열이다.
		속성 number의 값만큼 반복문을 돌려 numArr에 삽입하여라.
	*/
	
	var obj4 = {
			number : 10,
			numArr : [],
	};
	
	for (var i = 0; i < obj4.number ; i++ ){
		obj4.numArr.push(i);
	};

5.

/*  
		실습 5. 객체 obj5에 속성 memberArray, targetMember 가 있다.
		targetMember과 memberArray는 배열이다.
		속성 targetMember 안에는 객체가 또 존재하며 속성 name과 age가 있다.
		age가 20 이상인 대상의 이름만 memberArray에 삽입하여라.
	*/
	
	var obj5 = {
			memberArray : [],
			targetMember : [
				{name : '홍길동', age : 21},
				{name : '홍길순', age : 19},
				{name : '이순신', age : 25},
				{name : '둘리', age : 18},
			]
		};
	
	for(var i =0; i <obj5.targetMember.length ; i++){
		if(obj5.targetMember[i].age >= 20){
			obj5.memberArray.push(obj5.targetMember[i].name);
		}	
	};
	
	console.log(obj5);

6.

	/*  
		실습 6. 객체 obj6에 속성 numArray, avg가 있다.
		속성 numArray는 배열, avg의 값은 0이다.
		배열numArray 값 들의 평균값을 avg에 삽입하고,
		obj6을 콘솔창에 출력하여라.
	*/
	
	var obj6 = {
			numArray : [20, 30, 40, 50, 60, 70, 80, 90],
			avg : 0
	};
	
	var sum = 0;
	
	
	for(var i = 0 ; i < obj6.numArray.length ; i ++){
		sum += obj6.numArray[i];
		
	};
	
	obj6.avg = sum/obj6.numArray.length;
	
	console.log(obj6);

'JavaScript' 카테고리의 다른 글

[JavaScript] 객체 + 함수 + 반복문 복습  (0) 2020.03.16
[JavaScript] 함수  (1) 2020.03.10
[JavaScript] 배열 객체  (0) 2020.03.09
[JavaScript] JavaScript 기초문법 ②  (0) 2020.03.05

+ Recent posts