yooniiverse
개발 블로그
yooniiverse
전체 방문자
오늘
어제
  • 분류 전체보기
    • 운영체제
    • 네트워크
    • ~2023.02
      • 외부교육
      • 대외활동
      • 스터디
      • 동아리
      • TIL
      • IT지식
      • 기타
      • 트러블 슈팅
      • 프로그래밍
      • Python
      • Java
      • JS
      • DB(SQL)
      • JSP
      • Spring
      • 기술면접
      • 자바
      • 코딩테스트
      • 자료구조
      • 알고리즘
      • 백준 문제풀이
      • 인공지능
      • 머신러닝
      • 프로젝트
      • 안드로이드 앱개발
      • 웹개발
      • 웹 서비스
      • 웹퍼블리싱
      • Node.js 백엔드 개발
      • CS
      • 1일 1CS지식
      • 운영체제
      • 네트워크
      • 데이터베이스
      • 정보처리기사
      • 도서 리뷰
      • 개발 관련 도서
      • 기타 도서

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yooniiverse

개발 블로그

자바스크립트 요소 노드 추가하기
~2023.02/JS

자바스크립트 요소 노드 추가하기

2022. 6. 1. 15:18
<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>할 일</title>
</head>
<body>
  <div>
    <h1>오늘 할 일</h1>
		<ol id="today">
			<li>공부</li>
			<li>청소</li>
			<li>쇼핑</li>
		</ol>
		<h1>내일 할 일</h1>
		<ol id="tomorrow">
			<li>공부</li>
			<li>예매</li>
			<li>유튜브 시청</li>
		</ol>
  </div>
  <script src="index.js"></script>
</body>
</html>
더보기

 

1. 기존의 문서 구조를 덮어쓰는 방식 - innerHTML과 outerHTML의 문제점


const today = document.querySelector('#today');

today.innerHTML = '<li>처음</li>' + today.innerHTML;
today.innerHTML = today.innerHTML + '<li>마지막</li>';

today.outerHTML = '<p>이전</p>' + today.outerHTML;

const newToday = document.querySelector('#today');
newToday.outerHTML = newToday.outerHTML + '<p>다음</p>';
더보기
  • innerHTML이나 outerHTML 프로퍼티는 기존의 내용을 덮어쓰는 방식으로 동작하기 때문에, 기존 내용을 보존하려면 기존의 값을 한 번 더 활용해야 한다. 이때 내용을 그대로 덮어 씌워 버려서 기존 데이터가 사라져 버리는 실수가 발생할 수 있다.
  • 심지어 outerHTML은 한 번 프로퍼티를 수정하게 되면 완전히 새로운 요소가 되어 버려서 이후에 해당 요소를 다시 다루려면 새롭게 다시 그 요소를 찾아야 하는 문제도 발생한다.

 

 

2. 요소 노드를 직접 생성해서 필요한 곳에 추가하는 방식


const today = document.querySelector('#today');

today.innerHTML = '<li>처음</li>' + today.innerHTML;
today.innerHTML = today.innerHTML + '<li>마지막</li>';

today.outerHTML = '<p>이전</p>' + today.outerHTML;

const newToday = document.querySelector('#today');
newToday.outerHTML = newToday.outerHTML + '<p>다음</p>';


// 요소 노드 추가하기
const tomorrow = document.querySelector('#tomorrow');

// 1. 요소 노드 만들기 : documnet.createElement('태그이름')
const first = document.createElement('li');

// 2. 요소 노드 꾸미기 : textContent, innerHTML, ...
first.textContent = '처음';

// 3. 요소 노드 추가하기 : Node.prepend, append, after, before
tomorrow.prepend(first);

const last = document.createElement('li');
last.textContent = '마지막';
tomorrow.append(last);

const prev = document.createElement('p');
prev.textContent = '이전';
tomorrow.before(prev);

const next = document.createElement('p');
next.textContent = '다음';
tomorrow.after(next);
더보기
  • 요소 노드 추가는 세 가지 단계로 이루어진다.
  • 첫 번째는 요소 노드를 만드는 것이다. document 객체의 createElement라는 메소드를 활용해 원하는 태그 이름으로 요소 노드를 만들 수 있다.
  • 두 번째는 요소 노드를 꾸며주는 것이다. textContent나 innerHTML을 활용할 수 있다.
  • 세 번째는 요소 노드를 추가하는 것이다. prepend라는 메소드를 이용하면 메소드를 호출한 노드의 제일 첫 번째 노드로 파라미터로 전달한 값을 추가할 수 있다.

'~2023.02 > JS' 카테고리의 다른 글

스타일 다루기  (0) 2022.06.01
HTML 속성 다루기 예제  (0) 2022.06.01
id, class, css 선택자로 태그 선택하기  (0) 2022.06.01
유사배열(Array-Like Object)  (0) 2022.06.01
html/css_01  (0) 2022.05.02
    '~2023.02/JS' 카테고리의 다른 글
    • 스타일 다루기
    • HTML 속성 다루기 예제
    • id, class, css 선택자로 태그 선택하기
    • 유사배열(Array-Like Object)
    yooniiverse
    yooniiverse

    티스토리툴바