Wstawianie HTML do div


118

Próbuję wstawić fragment kodu HTML do elementu div. Chcę sprawdzić, czy zwykły sposób JavaScript jest szybszy niż użycie jQuery. Niestety zapomniałem, jak to zrobić w „stary” sposób. : P

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);
}

co ja tu robię źle chłopaki?

edycja :
Ktoś zapytał, który jest szybszy, jquery czy zwykły js, więc napisałem test:
http://jsperf.com/html-insertion-js-vs-jquery

zwykły js jest o 10% szybszy


Który z nich jest szybszy? zwykły javascript czy jquery?
Ali

3
@Ali: js jest szybszy, zobacz moją edycję.
mkoryak

Odpowiedzi:


177

Myślę, że tego chcesz:

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

Należy pamiętać, że innerHTML nie jest dostępne dla wszystkich typów tagów podczas korzystania z przeglądarki IE. (na przykład elementy tabeli)


23
+1 za wzmiankę o zgodności z IE, życzę wszystkim, aby to zrobili!
Enrico

Wielkie dzięki!
user3396381

53

Użycie JQuery rozwiązałoby problem niespójności przeglądarki. Korzystając z biblioteki jquery dołączonej do projektu, po prostu napisz:

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

Możesz również rozważyć użycie:

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

Spowoduje to dodanie Twojej galerii jako ostatniej pozycji w wybranym div. Lub:

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

Spowoduje to dodanie go jako pierwszego elementu w wybranym div.

Zobacz dokumentację JQuery dla tych funkcji:


22
OP specjalnie poprosił o zwykły javascript, ale to mi pomogło, więc nadal uważam to za przydatne.
podwójneJ

Pomogłoby zobaczyć przykład z wstawionym długim ciągiem HTML. Na przykład mam przypadek, w którym technologie serwerowe (php itp.) Są niedozwolone i chcę ponownie użyć około 20 wierszy HTML na tej samej stronie.
Jennifer Michelle

To może się przydać. Dzięki.
arunken

40

Używam „+” (plus), aby wstawić div do html:

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

Mam nadzieję, że to pomoże.


3
Dzięki za + = odpowiedź, która zaoszczędziła mi wielu bólów głowy.
Michael Tunnell,

1
@MichaelTunnell to naprawdę się udało
boskie

Dziękuję Ci. Funkcja appendChild nie działała dla mnie, ale działała dobrze w moim przypadku użycia.
khwilo

To jest poprawna odpowiedź, pytanie dotyczyło wstawiania, dzięki
OJB1

28

Alternatywnie możesz użyć insertAdjacentHTML - jednak zagłębiam się i przeprowadzam testy wydajności - (2019.09.13 piątek) MacOs High Sierra 10.13.6 na Chrome 76.0.3809 (64-bit), Safari 12.1.2 (13604.5.6), Firefox 69.0.0 (64-bitowa)). Test F ma charakter wyłącznie informacyjny - nie wchodzi w zakres, ponieważ musimy wstawiać dynamicznie html - ale w F robię to ręcznie (w sposób statyczny) - teoretycznie (o ile wiem) powinno to być najszybszy sposób wstawiania nowych elementów html.

wprowadź opis obrazu tutaj

PODSUMOWANIE

  • (Nie mylić z ) jest najszybszy (Safari 48K operacji na sekundę, Firefox 43K op / s, Chrome 23k op / s) Jak wynosi ~ 31% wolniej niż rozwiązanie idealne F tylko Chrome, ale na Safari i Firefox jest szybszy ( !) innerHTML =+=
  • B innerHTML +=... jest najwolniejszy ze wszystkich przeglądarek (Chrome 95 op / s, Firefox 88 op / s, Sfari 84 op / s)
  • D jQuery jest drugi slow na wszystkich przeglądarek (Safari 14 op / s, Firefox 11k op / s, Chrome 7k op / s)
  • Rozwiązanie referencyjne F (teoretycznie najszybsze) nie jest najszybsze w przeglądarkach Firefox i Safari (!!!) - co jest zaskakujące
  • Najszybszą przeglądarką była Safari

Więcej informacji o tym, dlaczego innerHTML =jest o wiele szybciej niż innerHTML +=jest tutaj . Możesz przeprowadzić test na swoim komputerze / przeglądarce TUTAJ


18

I wiele linii może wyglądać tak. HTML jest tylko przykładem.

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);
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.