edwith_부스트코스_웹 프로그래밍

[부스트코스]{3. 웹 앱 개발: 예약서비스 1/4}(2. DOM API 활용 - FE)_2. DOM API 연습하기

pea_Nut 2020. 3. 9. 13:51

 

다음의 HTML 코드를 이용하여 실습해보자.

http://jsbin.com/mebuha/1/edit?html,js,output

 

JS Bin

Sample of the bin:

jsbin.com

 

 

 

실습 1) strawberry 아래에 새로운 과일을 하나 더 추가하시오.

 

코드 

var mango = document.createElement("li"); //새로운 li요소를 생성한다.
var mangoText = document.createTextNode("mango"); //text를 생성한다.
mango.appendChild(mangoText); //mango 요소에 text를 삽입한다.

var parent = document.querySelector("ul"); //새로운 li를 삽입할 부모 ul을 찾는다.
parent.appendChild(mango); //parent에 mango를 append한다.

 

결과

 

 

실습 2) insertBefore메서드를 사용해서, orange와  banana 사이에 새로운 과일을 추가하시오.

 

코드

var mango = document.createElement("li");
var mangoText = document.createTextNode("mango");
mango.appendChild(mangoText);

var parent = document.querySelector("ul");

var banana = document.querySelector("li:nth-child(3)"); //ul의 자식 중 banana는 세번째이다.

parent.insertBefore(mango,banana); //banana 요소 전에 mango를 insert한다.

 

결과

 

 

실습 3) insertAdjacentHTML메서드를  사용해서, orange와 banana 사이에 새로운 과일을 추가하시오.

 

개념

element.insertAdjacentHTML(position, text);

position
'beforebegin' element 앞에 
'afterbegin' element 안에 가장 첫번째 child
'beforeend' element 안에 가장 마지막 child
'afterend' element 뒤에
text(인자)는 HTML 또는 XML로 해석될 수 있는 문자열이고(html code), (DOM) tree에 삽입할 수 있다.

 

 

코드

var orange = document.querySelector("li:nth-child(2)");
orange.insertAdjacentHTML('afterend',"<li>mango</li>"); //orange 다음에 iinsert하기

 

결과

 

 

실습 4) apple을 grape 와 strawberry 사이로 옮기시오.

 

코드

var strawberry = document.querySelector("li:nth-child(5)");
var apple = document.querySelector("li:nth-child(1)");

var parent = document.querySelector("ul");

parent.insertBefore(apple, strawberry); //element를 move시킨다.

 

결과

 

 


 

 

다음의 HTML 코드를 이용하여 실습해보자.

http://jsbin.com/redetul/1/edit?html,css,js,output

 

JS Bin

Sample of the bin:

jsbin.com

 

 

실습 5) class 가 'red'인 노드만 삭제하시오.

 

코드

var reds = document.querySelectorAll("li.red");
//li중 class가 red인 요소 모두 ALL 찾기

var parent = document.querySelector("ul");

for(var i=0; i<reds.length;i++){ 
  parent.removeChild(reds[i]); //부모 밑의 자식 삭제
}

 

결과

 


 

 

다음의 HTML 코드를 이용하여 실습해보자.

https://jsbin.com/ricopa/1/edit?html,css,js,output

 

JS Bin

Sample of the bin:

jsbin.com

 

 

실습 6) section 태그의 자손 중에 blue라는 클래스를 가지고 있는 노드가 있다면, 그 하위에 있는 h2 노드를 삭제하시오.

 

코드

var bluenode = document.querySelectorAll("section .blue"); //section 아래의 blue class 찾기
for (var i=0; i<bluenode.length; i++){
  var section=bluenode[i].closest("section"); //가장 가까운 "section" 태그 찾기
  var h2 = section.querySelector("h2"); //section의 h2 요소 찾기
  section.removeChild(h2); //부모 "section" 의 자식 "h2" 삭제하기
}

*주의: querySelector는 한개의 요소만 반환 querySelectorAll는 요소들의 list로 반환 _ 반환 type 조심

 

결과

 

 

 

 

 

 

 

 

 

 

#부스트코스 강의

https://www.edwith.org/boostcourse-web/lecture/20124/

 

[LECTURE] 2) DOM APIs 실습 : edwith

들어가기 전에 React, Angular과 같은 프레임워크는 DOM조작을 편리하게 해주고 있습니다. 하지만 가장 빠른 DOM조작방법은 DOM APIs를 직접 사용하는 것입니다. 더... - 부스트코스

www.edwith.org