41기 개발자과정

20211029 documnet api 실습

segment 2021. 10. 29. 17:20

document api 실습.

1. .my-div 클릭시 '클릭해주세요'라는 문구를 '한국스마트정보교육원'으로 변경하도록 하시오.

 

<div class ="my-div">
		<span>클릭해주세요.</span>
	</div>
	<div class ="my-div">
		<span>클릭해주세요.</span>
	</div>
	<div class ="my-div">
		<span>클릭해주세요.</span>
	</div>
	<script type="text/javascript">
	var mydiv = document.querySelectorAll('.my-div');
	for(var i=0; i<mydiv.length; i++){
		mydiv[i].addEventListener('click', function(){
			var span = this.querySelector('span');
			span.innerText = '한국스마트정보교육원';
		})
	}
	
	</script>

 

2. 체크된 대상의 값을 합산하여 #totalPrice 에 결과를 출력하여라.

<div id="checkList">
		<label>
			<input type="checkbox" name ="goods" value="1000"> 1000
		</label>
		<label>
			<input type="checkbox" name ="goods" value="2000"> 2000
		</label>
		<label>
			<input type="checkbox" name ="goods" value="3000"> 3000
		</label>
	</div>
	<div>
		합산 : <span id="totalPrice">0</span>
	</div>

 

내풀이)

var goods = document.querySelectorAll('#checkList input[name=goods]');
	var sum = 0;
	for(var i=0; i<goods.length; i++){
		goods[i].addEventListener('click', function(){
			sum += Number(this.value);
			var totalPrice = document.querySelector('#totalPrice');
			totalPrice.innerText = sum;
		});
	}

선생님 풀이)

 

 

3. 아래의 객체를 확인하고 버튼 클릭시 객체를 테이블로 구성하도록 하여라.

<table id="memberList">
	<thead>
		<tr>
			<th>회원명</th>
			<th>회원나이</th>
			<th>회원이메일</th>
		</tr>
	</thead>
		<tbody>
			<tr>
				<td colspan ="3">버튼을 클릭해주세요.</td>
			</tr>
		</tbody>
	</table>
	<button type="button" id="memberPirntBtn">회원출력</button>
    
    var memberList = [
			{memberName : '홍길동' ,memberAge : 20, memberEmail : 'a@naver.com'},
			{memberName : '이순신' ,memberAge : 21, memberEmail : 'b@naver.com'},
			{memberName : '고길동' ,memberAge : 23, memberEmail : 'c@naver.com'},
			{memberName : '유관순' ,memberAge : 25, memberEmail : 'd@naver.com'},
			{memberName : '홍길순' ,memberAge : 26, memberEmail : 'e@naver.com'}
		];

 

var memberPrintBtn = document.querySelector('#memberPirntBtn');
	var tbody = document.querySelector('#memberList tbody');
	
	memberPirntBtn.addEventListener('click', function(){
		var htmlStr = '';
		for(var i=0; i<memberList.length; i++){
			var member = memberList[i];
			htmlStr += '<tr>';
			htmlStr += '<td>';
			htmlStr += member.memberName;
			htmlStr += '</td>';
			htmlStr += '<td>';
			htmlStr += member.memberAge;
			htmlStr += '</td>';
			htmlStr += '<td>';
			htmlStr += member.memberEmail;
			htmlStr += '</td>';
			htmlStr += '</tr>';
		}
		tbody.innerHTML = htmlStr;
	})

document api 3

- 검색된 객체 기준으로 상하위 요소를 검색 할 수 있다.
- 검색된 객체 기준으로 객체를 생성 및 소멸을 시킬 수 있다.

 

<div id ="btn-group">
		<ul>
			<li>
				<button type="button" class="my-btn">버튼1</button>
				<hr/>
				<div class="my-text">설명문구입니다.</div>
			</li>
			<li>
				<button type="button" class="my-btn">버튼2</button>
				<hr/>
				<div class="my-text">설명문구입니다.</div>
			</li>
		</ul>
	</div>

 

1. 선택된 개체 기준 하위요소 검색

var btnGroup = document.querySelector('#btn-group');
console.log(btnGroup);
console.log(btnGroup.childNodes, '모든 하위요소 (텍스트포함(개행 및 탭))')
console.log(btnGroup.children, 'html 하위 요소')

childnodes : 공백도 자식요소로 간주하기 때문에 잘 쓰지 않는다.

children : 

 

 

2. 상위 요소 정보를 담은 속성

console.log(btnGroup.parentNode, '상위요소');

parentNdoe : 부모노드

 

console.log(btnGroup.parentElement, '상위요소');

parentElement : 지정된 요소의 부모 요소를 반환

 

3. 이벤트 발동대상 기준으로 상하 요소 검색하기

var myBtn = document.querySelectorAll('.my-btn');
		var cnt = 0;
		for( var i=0; i<myBtn.length; i++){
			myBtn[i].addEventListener('click', function(){
				var parent = this.parentElement;
				var myText = parent.querySelector('.my-text');
				console.log(parent, myText);
				myText.innerText = '카운팅: ' + cnt;
				cnt++;
			});
		}

객체생성 및 소멸

- 객체.remove() : 선택된 객체 제거
- createElement() : 객체생성
- createAttribute() : 속성 생성
- setAttributeNode() : 생성한 객체에  속성 부여
- appendChild() : 선택된 대상 하위 요소 추가생성

<div id="mycreateNode">버튼을 클릭해주세요.</div>
<button type="button" id="addNodeBtn">버튼 생성하기</button>

 

var addNodeBtn = document.querySelector('#addNodeBtn');
	var mycreateNode = document.querySelector('#mycreateNode');
	addNodeBtn.addEventListener('click', function(){
		//화면에 적용되지 않는 버튼 객체생성
		var createBtn = document.createElement('button');
		//속성을 생성하기
		var typeAttr = document.createAttribute('type');
		typeAttr.value = 'button';
		//생성된 속성을 버튼 객체에 삽입하기
		createBtn.setAttributeNode(typeAttr);
		//텍스트 요소 삽입하기
		createBtn.innerText = '생성된버튼';
		console.log(createBtn, {createBtn});
		
		//적용안됨.
		//console.log(createBtn.attributes);
		//createBtn.attributes.class = 'text';
		
		//버튼 객체 화면에 삽입
		mycreateNode.appendChild(createBtn);
	});

 

객체복제

- cloneNode(true) - 선택된 객체 복제(true일 경우 하위 요소도 복제)

<div id="cloneList">
		<div class="cloneTarget">
			<input type="text" name="userName" value="홍길동">
		</div>
	</div>
	<button type="button" id="cloneBtn">추가</button>
	var cloneBtn = document.querySelector('#cloneBtn');
		var cloneTarget = document.querySelector('.cloneTarget');
		var cloneList = document.querySelector('#cloneList');
		
		cloneBtn.addEventListener('click', function(){
			//검색된 객체를 복재
			var clone = cloneTarget.cloneNode(true);
			//검색된 대상 하위 요소 검색
			var input = clone.querySelector('[name=userName]');
			//검색된 하위 요소의 속성을 변경.
			input.value = '이순신';
			console.log(clone);
			
			//복제된 대상을 화면에 삽입.
			cloneList.appendChild(clone);
		});

 

 

 


실습. 아래의 버튼을 클릭시 클릭된 버튼에 해당되는 행을 제거하도록 하시오.
(제거 관련된 메서드 remove() - 선택된 객체 제거 )

<table border = "1">
		<tr>
			<td>안녕하세요</td>
			<td>
				<button type="button" class ="btn">제거</button>
			</td>
		</tr>
		<tr>
			<td>안녕하세요</td>
			<td>
				<button type="button" class ="btn">제거</button>
			</td>
		</tr>
		<tr>
			<td>안녕하세요</td>
			<td>
				<button type="button" class ="btn">제거</button>
			</td>
		</tr>
		<tr>
			<td>안녕하세요</td>
			<td>
				<button type="button" class ="btn">제거</button>
			</td>
		</tr>
		<tr>
			<td>안녕하세요</td>
			<td>
				<button type="button" class ="btn">제거</button>
			</td>
		</tr>
		<tr>
			<td>안녕하세요</td>
			<td>
				<button type="button" class ="btn">제거</button>
			</td>
		</tr>
	</table>
var button = document.querySelectorAll('.btn');
	for(var i=0; i<button.length; i++){
		button[i].addEventListener('click', function(){
			var line = this.parentElement.parentElement;
			line.remove();
		});
	}

 

실습. 아래의 첨부파일을 등록할 수 있는 양식이 잇다. 추가버튼을 누르게 되면
첨부파일 관련된 양식을 복제하여 추가하도록 하여라.

<form>
		<button type="button" id="add-file">추가</button>
		<div id="file-List">
			<div class="file-group">
				<input type="file" name="userFile">
				<button type="button" class="file-del">제거</button>
			</div>
		</div>
</form>
var addfile = document.querySelector('#add-file');
	var fileList = document.querySelector('#file-List');
	var filegroup = document.querySelector('.file-group');
	
	addfile.addEventListener('click', function(){
		var clone = filegroup.cloneNode(true);
		fileList.appendChild(clone);
	});