방명록
- [JavaScript] 바닐라 자바스크립트로 외부 HTML 로딩하여 Ajax 처럼 화면 렌더링2022년 09월 23일 13시 35분 13초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
바닐라 자바스크립트로 웹사이트를 만들고 있는데, 외부 HTML 파일을 가져와 화면에 렌더링 하고자 하였다. 이때 Ajax처럼 기존에 렌더링 된 화면은 그대로 두고 원하는 부분만 새로 렌더링 하고 싶었다. 결과적으로 적용한 코드는 다음과 같다.
// ID에 렌더링 function openContent(htmlFileName) { const h = `<div data-include-path="${htmlFileName}.html"></div>` document.querySelector("#showContents").innerHTML = h; loadHtml(); // 외부 HTML 파일 로딩 호출 } // 외부 HTML파일 로딩 함수 function loadHtml() { window.addEventListener('click', function() { var allElements = document.getElementsByTagName('*'); Array.prototype.forEach.call(allElements, function(el) { var includePath = el.dataset.includePath; if (includePath) { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { el.outerHTML = this.responseText; } }; xhttp.open('GET', includePath, true); xhttp.send(); } }); }); }
<!-- HTML파일 표시 영역 --> <div id="showContents"></div>
만약 a태그로 함수를 호출한다면 아래 코드를 참고하면 된다.
<a href="javascript:void(0);" onclick="호출함수(); return false;">void(0)방식</a> <a href="#" onclick="호출함수(); return false;">#방식</a>
참고 : https://thingsthis.tistory.com/130
728x90반응형'언어·프레임워크 > JavaScript' 카테고리의 다른 글
[JavaScript] 파이썬의 enumerate()를 자바스크립트에서? (0) 2023.05.07 [JavaScript] 배열 메서드 forEach와 fill을 이용한 반복적인 배열 요소 생성(map 추가) (0) 2023.05.01 [JavaScript][Trouble Shooting] json-server에서 "_id" 삭제(DELETE)가 안되는 문제, 더미 데이터 생성 (0) 2022.09.18 [JavaScript][문제해결] Javascript의 select에서 checked인 모든 요소를 삭제하려고 했는데... (0) 2022.05.17 [JavaScript][문제해결] trim()에 괄호를 빠뜨려 생긴 문제 (0) 2022.04.25 다음글이 없습니다.이전글이 없습니다.댓글