Einfügen von HTML in ein div

118

Ich versuche, einen Teil von HTML in ein div einzufügen. Ich möchte sehen, ob ein einfacher JavaScript-Weg schneller ist als die Verwendung von jQuery. Leider habe ich vergessen, wie man es auf die "alte" Art macht. : 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);
}

Was mache ich hier falsch, Leute?

Bearbeiten :
Jemand fragte, was schneller ist, jquery oder einfaches js, also schrieb ich einen Test:
http://jsperf.com/html-insertion-js-vs-jquery

plain js ist 10% schneller

mkoryak
quelle
Welches ist jetzt schneller? einfaches Javascript oder jquery?
Ali
3
@Ali: js ist schneller, siehe meine Bearbeitung.
Mkoryak

Antworten:

176

Ich denke, das ist was du willst:

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

Beachten Sie, dass innerHTML bei Verwendung des IE nicht für alle Arten von Tags zugänglich ist. (Tabellenelemente zum Beispiel)

Nathan
quelle
23
+1 für die Erwähnung der IE-Kompatibilität, wünschte, jeder hätte dies getan!
Enrico
Grosses Dankeschön!
user3396381
53

Die Verwendung von JQuery würde diese Browser-Inkonsistenz beheben. Mit der in Ihrem Projekt enthaltenen jquery-Bibliothek schreiben Sie einfach:

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

Sie können auch Folgendes in Betracht ziehen:

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

Dadurch wird Ihre Galerie als letztes Element im ausgewählten Div hinzugefügt. Oder:

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

Dadurch wird es als erstes Element im ausgewählten Div hinzugefügt.

Informationen zu diesen Funktionen finden Sie in den JQuery-Dokumenten:

designerdre101
quelle
22
OP hat speziell nach einfachem Javascript gefragt, aber das hat mir geholfen, deshalb halte ich es immer noch für nützlich.
doubleJ
Es würde helfen, ein Beispiel mit einer langen HTML-Zeichenfolge zu sehen. Zum Beispiel habe ich einen Fall, in dem Servertechnologien (PHP usw.) nicht erlaubt sind, und ich möchte ungefähr 20 HTML-Zeilen auf derselben Seite wiederverwenden.
Jennifer Michelle
Dies könnte nützlich sein. Vielen Dank.
betrunken
40

Ich benutze "+" (plus), um div in html einzufügen:

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

Ich hoffe das hilft.

Yosep Tito
quelle
3
Danke für die + = Antwort, die mir viele Kopfschmerzen erspart hat.
Michael Tunnell
1
@ MichaelTunnell hat es wirklich getan
göttlicher
Danke dir. Die appendChild- Funktion hat bei mir nicht funktioniert, aber bei meinem Anwendungsfall.
Khwilo
Dies ist die richtige Antwort, die Frage war, wie man
einfügt
28

Als Alternative können Sie insertAdjacentHTML verwenden - ich beschäftige mich jedoch mit einigen Leistungstests - (2019.09.13 Freitag) MacOs High Sierra 10.13.6 auf Chrome 76.0.3809 (64-Bit), Safari 12.1.2 (13604.5.6), Firefox 69.0.0 (64-Bit)). Der Test F dient nur als Referenz - er kommt nicht in Frage, da wir dynamisch HTML einfügen müssen - aber in F mache ich es von Hand (auf statische Weise) - theoretisch (soweit ich weiß) sollte dies der sein schnellster Weg, um neue HTML-Elemente einzufügen.

Geben Sie hier die Bildbeschreibung ein

ZUSAMMENFASSUNG

  • Das A innerHTML = (nicht zu verwechseln mit +=) ist am schnellsten (Safari 48.000 Operationen pro Sekunde, Firefox 43.000 op / s, Chrome 23k op / s) Das A ist ~ 31% langsamer als die ideale Lösung F nur Chrom, aber auf Safari und Firefox ist es schneller ( !)
  • Das B innerHTML +=... ist in allen Browsern am langsamsten (Chrome 95 op / s, Firefox 88 op / s, Sfari 84 op / s).
  • Die D jQuery ist in allen Browsern an zweiter Stelle langsam (Safari 14 op / s, Firefox 11k op / s, Chrome 7k op / s).
  • Die Referenzlösung F (theoretisch am schnellsten) ist auf Firefox und Safari (!!!) nicht am schnellsten - was überraschend ist
  • Der schnellste Browser war Safari

Weitere Informationen darüber , warum innerHTML =ist viel schneller als innerHTML +=ist hier . Sie können HIER einen Test auf Ihrem Computer / Browser durchführen

Kamil Kiełczewski
quelle
18

Und viele Zeilen können so aussehen. Das HTML hier ist nur ein Beispiel.

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);
Atom
quelle