innerHTML - 요소안에 있는 HTML 자체를 문자열로 리턴

 

*태그와 태그 사이의 들여쓰기나 줄바꿈도 모두 포함.

요소안의 HTML을 확인하는 것 보다는 요소안의 HTML을 수정할 때 자주 사용.

출력시 first <li>~ last </li> 까지 출력됨.

ex) 기존 HTML

<ul id = "list-1">

  <li>123</li>

  <li>456</li>

</ul>

 

이 상황에 JS로

<script>

const myTag = document.querySelector('#list-1');

 

myTag.innerHTML = '<li>789</li>';

</script>

를 사용한다면 

 

변경된 HTML

<ul id = "list-1">

  <li>789</li>

</ul>

처럼 바뀌어 출력된다.

 

출력 :   <li>789</li>

 

 

만약 

script에서 

myTag.innerHTML += '<li>789</li>'; 

처럼 += 을 사용한다면 해당 리스트의 마지막 부분에 추가된다.

그러면

 

<ul id = "list-1">

  <li>123</li>

  <li>456</li>

  <li>789</li>

</ul>

로 바뀌어 출력 된다.

 

출력 :

  <li>123</li>

  <li>456</li>

  <li>789</li>

 

outerHTML - 해당 요소를 포함한 전체의 HTML 코드를 문자열로 리턴해준다.

 

innerHTML과 같이 들여쓰기와 줄바꿈이 다 있다.

 

모든 요소를 포함하고 있다보니, 값의 수정이 아닌, 값이 아예 다른 값이 되버린다.

 

기존의 출력에도 <ul>~</ul>까지 다 출력됨.

ex)

기존 HTML

<ul id = "list-1">

  <li>123</li>

  <li>456</li>

</ul>

다음과 같은 코드가 있을 때.

myTag.outerHTML = '<ul id = "new-list"><li>789</li></ul>';

이를 적용하면

 

변경된 HTML

<ul id = "new-list">

  <li>789</li>

</ul>

이 처럼 id명도 바뀌어 출력된다.

 

textContent

- innerHTML과 비슷한데, 요소 안의 내용을 가져오는 것은 동일. 하지만 태그를 제외한 값만 가져옴.

- 역시나 innerHTML 처럼 값을 수정할 수도 있음.

 

기존 HTML

<ul id = "list-1">

  <li>123</li>

  <li>456</li>

</ul>

일때 

myTag.textHTML = 'new text';

를 사용하면

 'new text';

만 출력됨.

근데, 얘는 특수문자도 텍스트로 출력함.

ex)

myTag.textHTML = '<li>new text</li>';

를 하면

 '<li>new text</li>';

가 출력됨.

 

*이는 실제 HTML 값이 변하는게 아니라, JS를 출력한 이후 콘솔의 값이 변하는 것이라는 점을 주의해야함.

 

createElement - 원하는 태그 이름을 요소 노드로 만들 수 있음.

ex)

1. 변수 생성(기존에 ul id = one, two 존재)

const first = document.createElement('li');  // li태그 생성

2. 변수 안에 문자 넣기

first.textContent = '처음';  // 생성한 li 태그에 문자 '처음'을 넣음

3. 값이 있는 first를 prepend를 이용하여 호출한 노드에 첫번째 노드로 값 추

two.prepend(first); // prepend(변수) 

-> 메소드를 호출한 노드의 제일 첫번째 자식 노드로  파라미터로 전달한 값을 추가할 수 있음

two.append(last); // append(변수) 

-> 메소드를 호출한 노드의 제일 마지막 자식 노드로 파라미터로 전달한 값을 추가할 수 있음

two.before(prev); // before(변수) 

-> 메소드를 호출한 노드의 앞쪽에 파라미터로 전달한 값을 형제노드로 추가할 수 있음

two.after(next); // after(변수) 

-> 메소드를 호출한 노드의 뒤쪽에 파라미터로 전달한 값을 형제노드로 추가할 수 있음

빨간색으로 적은 파라미터(first,last,prev,next)자리에 파라미터가 아닌 문자열을 넣으면

문자열이 출력되고, 문자열을 적고, 파라미터를 적는 등 여러가지를 적으면 순차적으로 값이 

나열된다.

 

*prepend 나 before의 경우에는 요소를 앞으로 추가하기 때문에 여러개의 값을 전달하게 되면 

역순으로 추가될 거라고 오해할 수 있는데 적은 그대로 한꺼번에 출력된다.

 

노드를 삭제하거나 이동

 

삭제

 

two.remove(); 원하는 노드를 선택하여 호출한 뒤 remove 를 사용하면 자식노드가 모두 삭제됨.

- 자식 요소를 선택하여 삭제하는법

one.children[2].remove();

 

이동

 

(prepend,append,before,after 이용)

 

one.append(two.children[1]); -> one 노드의 마지막 노드로 two노드의 2번째 자식노드가 이동한다.

two.children[1].after(one.children[1]); -> two 노드의 2번째 자식노드 다음으로 one 노드의 2번째 자식 노드가 이동한다.

'Js' 카테고리의 다른 글

getElementsByClassName,querySelector(3/2 공부)  (0) 2023.03.02
forEach문 - check박스를 이용한 비밀번호 표시(비밀번호 보기)  (0) 2023.02.16
회원가입 유효성 검사  (0) 2023.02.15
정규식  (0) 2023.02.14
2/13 공부  (0) 2023.02.13

+ Recent posts