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


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)


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:


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.


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


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);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.