대부분 Dom Tree 밑에 html을 삽입시 innerHTML을 삽입한다.
innerHTML
아래와 같은 html 안에
<ul id="detail_info_wrapper">
</ul>
아래처럼 넣기 위해서는
<ul class="detail_info_wrapper">
<li class="info_grid"><strong>제품명</strong><p>${data.title}</p></li>
<li class="info_grid"><strong>용량</strong><p>${data.capacity}</p></li>
</ul>
document.getElementById('detail_info_wrapper').innerHTML =
'<li class="info_grid"><strong>제품명</strong><p>${data.title}</p></li>
<li class="info_grid"><strong>용량</strong><p>${data.capacity}</p></li>'
과 같은 과정이 필요하다, 문제는 innerHTML은 노드안의 HTML을 초기화 한다는 점이다.
만약
<ul id="detail_info_wrapper">
<li>**주의사항: 고온에 조심하세요</li>
</ul>
라는 소스에
document.getElementById('detail_info_wrapper').innerHTML =
'<li class="info_grid"><strong>제품명</strong><p>${data.title}</p></li>
<li class="info_grid"><strong>용량</strong><p>${data.capacity}</p></li>'
을 삽입하면
<ul class="detail_info_wrapper">
<li class="info_grid"><strong>제품명</strong><p>${data.title}</p></li>
<li class="info_grid"><strong>용량</strong><p>${data.capacity}</p></li>
</ul>
처럼 원래 있던 html 태그는 사라지게 된다. 이를 위해서 원래 안의 태그를 복사해서 새롭게 추가되는 html에 추가하는 방법이 있겠지만 사실
insertAdjacentHTML
메소드를 쓰면 간단히 해결되는 문제이다.
<ul id="detail_info_wrapper">
<li>**주의사항: 고온에 조심하세요</li>
</ul>
라는 소스에
document.getElementById('detail_info_wrapper').insertAdjacentHTML =
'<li class="info_grid"><strong>제품명</strong><p>${data.title}</p></li>'
document.getElementById('detail_info_wrapper').insertAdjacentHTML =
'<li class="info_grid"><strong>용량</strong><p>${data.capacity}</p></li>'
를 삽입하면
<ul id="detail_info_wrapper">
<li>**주의사항: 고온에 조심하세요</li>
<li class="info_grid"><strong>제품명</strong><p>화장품</p></li>
<li class="info_grid"><strong>용량</strong><p>10ml</p></li>
</ul>
과 같은 결과를 얻을 수 있다. 물론 삽입 위치도 다양하게 정할 수 있는데 (노드 아래의 첫번째, 마지막, 노드 형제요소 등)
https://developer.mozilla.org/ko/docs/Web/API/Element/insertAdjacentHTML
Element.insertAdjacentHTML() - Web API | MDN
insertAdjacentHTML() 메서드는 HTML or XML 같은 특정 텍스트를 파싱하고, 특정 위치에 DOM tree 안에 원하는 node들을 추가 한다. 이미 사용중인 element 는 다시 파싱하지 않는다. 그러므로 element 안에 존재하
developer.mozilla.org
의 공식 문서를 살펴보면 더 자세하게 이해 할 수 있다.
'[개발언어] > Javacript' 카테고리의 다른 글
for 문과 foreach문 차이 (0) | 2023.03.21 |
---|---|
마우스 스크롤 방향 알기 (deltaY) (0) | 2023.03.21 |
JS를 이용한 CSS 클래스 제어 (0) | 2022.10.26 |
url 쿼리값 객채로 만들기 (dom 이용) (0) | 2022.10.26 |
MutationObserver 사용예시 (0) | 2022.07.22 |