Inserimento di HTML in un div


118

Sto cercando di inserire un pezzo di HTML in un div. Voglio vedere se il semplice modo JavaScript è più veloce rispetto all'utilizzo di jQuery. Sfortunatamente, ho dimenticato come farlo alla "vecchia" maniera. : 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);
}

cosa sto facendo di sbagliato qui ragazzi?

modifica :
qualcuno ha chiesto quale fosse più veloce, jquery o plain js, quindi ho scritto un test:
http://jsperf.com/html-insertion-js-vs-jquery

plain js è il 10% più veloce


Ora qual è il più veloce? semplice javascript o jquery?
— Ali

3
@ Ali: js è più veloce, guarda la mia modifica.
— mkoryak

Risposte:


177

Penso che questo sia quello che vuoi:

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

Tieni presente che innerHTML non è accessibile per tutti i tipi di tag quando si utilizza IE. (elementi della tabella per esempio)


23
+1 per aver menzionato la compatibilità con IE, vorrei che lo facessero tutti!
— Enrico

Ottimo grazie!
— user3396381

53

L'uso di JQuery si sarebbe preso cura di quell'incoerenza del browser. Con la libreria jquery inclusa nel tuo progetto scrivi semplicemente:

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

Puoi anche considerare di utilizzare:

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

Questo aggiungerà la tua galleria come ultimo elemento nel div selezionato. O:

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

Questo lo aggiungerà come primo elemento nel div selezionato.

Consulta la documentazione di JQuery per queste funzioni:


22
OP ha richiesto espressamente un semplice javascript, ma questo mi ha aiutato, quindi lo considero ancora utile.
— doubleJ

Sarebbe utile vedere un esempio con una lunga stringa di Html inserita. Ad esempio, ho un caso in cui le tecnologie server (php ecc.) Non sono consentite e voglio riutilizzare circa 20 righe di html all'interno della stessa pagina.
— Jennifer Michelle

Questo potrebbe tornare utile. Grazie.
— arunken

40

Utilizzo "+" (più) per inserire div in html:

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

Spero che questo aiuto.


3
Grazie per la risposta + =, che mi ha salvato un sacco di mal di testa.
— Michael Tunnell

1
@MichaelTunnell lo ha fatto davvero
— divino

Grazie. La funzione appendChild non ha funzionato per me, ma ha funzionato bene per il mio caso d'uso.
— khwilo

Questa è la risposta corretta, la domanda chiedeva come inserire, grazie
— OJB1

28

In alternativa puoi usare insertAdjacentHTML - tuttavia ho scavato e ho fatto alcuni test delle prestazioni - (2019.09.13 venerdì) MacOs High Sierra 10.13.6 su Chrome 76.0.3809 (64-bit), Safari 12.1.2 (13604.5.6), Firefox 69.0.0 (64 bit)). Il test F è solo di riferimento - è fuori dall'ambito della domanda perché dobbiamo inserire dinamicamente html - ma in F lo faccio a mano (in modo statico) - teoricamente (per quanto ne so) questo dovrebbe essere il modo più veloce per inserire nuovi elementi html.

inserisci qui la descrizione dell'immagine

SOMMARIO

  • L' A innerHTML = (da non confondere con +=) è il più veloce (Safari 48k operazioni al secondo, Firefox 43k op / sec, Chrome 23k op / sec) L' A è ~ 31% più lento della soluzione ideale F solo chrome ma su safari e firefox è più veloce ( !)
  • Il B innerHTML +=... è il più lento su tutti i browser (Chrome 95 op / sec, Firefox 88 op / sec, Sfari 84 op / sec)
  • Il D jQuery è seconda lenta su tutti i browser (Safari 14 op / sec, Firefox 11k op / sec, Chrome 7k op / sec)
  • La soluzione di riferimento F (teoricamente più veloce) non è la più veloce su Firefox e Safari (!!!) - il che è sorprendente
  • Il browser più veloce è stato Safari

Maggiori informazioni sul motivo per cui innerHTML =è molto più veloce di quanto non innerHTML +=sia qui . Puoi eseguire il test sulla tua macchina / browser QUI


18

E molte righe possono assomigliare a questa. L'html qui è solo di esempio.

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);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.