2009-02-25 12 views
72

Sto cercando di inserire un blocco di HTML in un div. Voglio vedere se la semplice modalità JavaScript è più veloce di usare jQuery. Purtroppo, ho dimenticato come farlo nel modo "vecchio". : PInserimento di HTML in un div

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?

modificare:
Qualcuno ha chiesto che è più veloce, jQuery o js pianura così ho scritto un test:
http://jsperf.com/html-insertion-js-vs-jquery

JS pianura è più veloce del 10%

+0

Ora quale è più veloce? semplice javascript o jquery? – Ali

+1

@Ali: js è più veloce, vedi la mia modifica. – mkoryak

risposta

105

Credo che questo è ciò che si vuole:

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

Tenete a mente che innerHTML non è disponibile per tutti i tipi di tag quando usando IE. (elementi della tabella, ad esempio)

+20

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

40

L'utilizzo di JQuery si sarebbe occupato dell'incoerenza del browser. Con la libreria jQuery incluso nel progetto è sufficiente scrivere:

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

Si può anche considerare utilizzando:

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

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

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

Questo lo aggiungerà come primo elemento nel div selezionato.

Vedi la documentazione JQuery per queste funzioni:

+12

OP chiesto specificamente per javascript semplice, ma questo mi ha aiutato, quindi lo considero ancora utile. – doubleJ

+0

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. –

18

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

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

Spero che questo aiuto.

+2

Grazie per la risposta + =, mi ha risparmiato un sacco di mal di testa. –

+1

@MichaelTunnell lo ha davvero fatto – divine

7

E molte linee possono assomigliare a questo. L'html qui è solo campione.

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); 
Problemi correlati