div에 HTML 삽입


118

div에 HTML 덩어리를 삽입하려고합니다. 일반 JavaScript 방식이 jQuery를 사용하는 것보다 빠른지 확인하고 싶습니다. 불행히도 나는 '오래된'방식으로하는 방법을 잊었다. :피

var test2 = function(){
    var cb = function(html){
        var t1 = document.getElementById("test2");
        var d = document.createElement("div");
        d.id ="oiio";
        d.innerHtml = html;
        t1.appendChild(d);
        console.timeEnd("load data with javascript");
    };
    console.time("load data with javascript");
    $.get("test1.html", cb);
}

내가 여기서 뭘 잘못하고 있니?

편집 :
누군가가 더 빠른 jquery 또는 일반 js를 물었으므로 테스트를 작성했습니다.
http://jsperf.com/html-insertion-js-vs-jquery

일반 js는 10 % 더 빠릅니다.


이제 어느 것이 더 빠릅니까? 일반 자바 스크립트 또는 jquery?
Ali

3
@Ali : js가 더 빠릅니다. 내 편집을 참조하십시오.
mkoryak

답변:


177

나는 이것이 당신이 원하는 것이라고 생각합니다.

document.getElementById('tag-id').innerHTML = '<ol><li>html data</li></ol>';

IE를 사용할 때 모든 유형의 태그에 대해 innerHTML에 액세스 할 수있는 것은 아닙니다. (예 : 테이블 요소)


23
IE 호환성에 대해 언급 한 +1, 모두가이 작업을 수행하기를 바랍니다!
Enrico

감사합니다!
user3396381

53

JQuery를 사용하면 브라우저 불일치를 처리 할 수 ​​있습니다. 프로젝트에 포함 된 jquery 라이브러리를 사용하여 다음과 같이 작성하면됩니다.

$('#yourDivName').html('yourtHTML');

다음을 사용할 수도 있습니다.

$('#yourDivName').append('yourtHTML');

그러면 선택한 div의 마지막 항목으로 갤러리가 추가됩니다. 또는:

$('#yourDivName').prepend('yourtHTML');

그러면 선택한 div의 첫 번째 항목으로 추가됩니다.

이러한 함수에 대해서는 JQuery 문서를 참조하십시오.


22
OP는 특히 일반 자바 스크립트를 요청했지만 도움이되었으므로 여전히 유용하다고 생각합니다.
doubleJ

긴 Html 문자열이 삽입 된 예제를 보는 데 도움이 될 것입니다. 예를 들어 서버 기술 (php 등)이 허용되지 않는 경우가 있는데, 같은 페이지에서 약 20 줄의 html을 재사용하고 싶습니다.
Jennifer Michelle

이것은 유용 할 수 있습니다. 감사.

40

"+"(더하기)를 사용하여 div를 html에 삽입합니다.

document.getElementById('idParent').innerHTML += '<div id="idChild"> content html </div>';

이 도움을 바랍니다.


3
+ = 대답에 감사드립니다.
Michael Tunnell

1
정말 한 @MichaelTunnell
하나님의

감사합니다. 에 appendChild의 기능은 나를 위해 일을하지 않았다하지만 내 사용 사례에 대해 잘 작동.
khwilo

이것이 정답입니다. 질문은 삽입 방법을 묻는 것이 었습니다. 감사합니다
OJB1

28

대안으로 insertAdjacentHTML 을 사용할 수 있습니다. 그러나 몇 가지 성능 테스트를 수행합니다. (2019.09.13 Friday) MacOs High Sierra 10.13.6 on Chrome 76.0.3809 (64 비트), Safari 12.1.2 (13604.5.6), Firefox 69.0.0 (64 비트)). 테스트 F 는 참조 용일뿐입니다. 동적 html을 삽입해야하므로 문제 범위를 벗어납니다.하지만 F 에서는 '손'(정적 방식으로)으로 수행합니다. 이론적으로 (내가 아는 한) 이것은 새로운 HTML 요소를 삽입하는 가장 빠른 방법입니다.

여기에 이미지 설명 입력

요약

  • A는 innerHTML = (하지 혼동과 함께 할 +=가장 빠른 (사파리 초당 48K 운영, 파이어 폭스 43K 영업 이익 / 초, 크롬 23K 영업 이익 / 초)는 IS) A는 이상적인 솔루션보다 느리게 ~ 31 %의 F 전용 (크롬하지만 사파리와 파이어 폭스가 더 빠르다 !)
  • B가 innerHTML +=... 모든 브라우저에서 가장 느리다 (크롬 95 OP / 초, 파이어 폭스 88 OP / 초, 84 Sfari OP / 초)
  • D jQuery를 모든 브라우저 (사파리 (14) 영업 이익 / 초, 파이어 폭스 11K 영업 이익 / 초, 크롬 7K 영업 이익 / 초) 느린 두 번째
  • 참조 솔루션 F (이론적으로 가장 빠름)는 firefox 및 safari (!!!)에서 가장 빠르지 않습니다. 이는 놀랍습니다.
  • 가장 빠른 브라우저는 Safari였습니다.

이유에 대한 자세한 정보 innerHTML =보다 훨씬 빠르기 innerHTML +=입니다 여기 . 여기에서 컴퓨터 / 브라우저에서 테스트를 수행 할 수 있습니다.


18

그리고 많은 줄이 이렇게 보일 수 있습니다. 여기 html은 샘플 일뿐입니다.

var div = document.createElement("div");

div.innerHTML =
    '<div class="slideshow-container">\n' +
    '<div class="mySlides fade">\n' +
    '<div class="numbertext">1 / 3</div>\n' +
    '<img src="image1.jpg" style="width:100%">\n' +
    '<div class="text">Caption Text</div>\n' +
    '</div>\n' +

    '<div class="mySlides fade">\n' +
    '<div class="numbertext">2 / 3</div>\n' +
    '<img src="image2.jpg" style="width:100%">\n' +
    '<div class="text">Caption Two</div>\n' +
    '</div>\n' +

    '<div class="mySlides fade">\n' +
    '<div class="numbertext">3 / 3</div>\n' +
    '<img src="image3.jpg" style="width:100%">\n' +
    '<div class="text">Caption Three</div>\n' +
    '</div>\n' +

    '<a class="prev" onclick="plusSlides(-1)">&#10094;</a>\n' +
    '<a class="next" onclick="plusSlides(1)">&#10095;</a>\n' +
    '</div>\n' +
    '<br>\n' +

    '<div style="text-align:center">\n' +
    '<span class="dot" onclick="currentSlide(1)"></span> \n' +
    '<span class="dot" onclick="currentSlide(2)"></span> \n' +
    '<span class="dot" onclick="currentSlide(3)"></span> \n' +
    '</div>\n';

document.body.appendChild(div);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.