2013-05-29 16 views
8

Say si ha,Conversione di una stringa HTML in un elemento DOM?

var some_html = '<div class = "am_hold">' + 
    '<img name="bo_im" id="' + val.id + '" class="bookmark_image" src="' + val.favicon + '">' + 
    '<a target="_blank" name="bookmark_link" class="bookmark_link" href = "' + 
    val.url + '" id="' + val.id + '">' + val.title + '</a>' + 
    '<div><div class = "bookmark_menu"></div></div>' + 
    '</div>'; 

è possibile fare

var some_element = `some_function`(some_html); 

C'è un'implementazione per una_qualche_funzione (1) senza l'uso di una biblioteca e (2) con l'utilizzo di una libreria.

+0

'var d = document.createElement ('div'); d.innerHTML = some_html; '? –

+0

Prova questa informazione 'https: // developer.mozilla.org/it-US/docs/Code_snippets/HTML_to_DOM' – Eldar

risposta

33

Creare un contenitore temporaneo per il codice HTML, quindi ottenere il suo contenuto. Qualcosa del tipo:

var d = document.createElement('div'); 
d.innerHTML = some_html; 
return d.firstChild; 
+0

@ pure_code.com: poche righe di codice non sono sempre il metodo migliore. Solo perché potrebbe esserci una soluzione one-liner, non significa che sia l'implementazione _best_. –

+0

@ pure_code.com: Ma non c'è. Puoi mettere queste tre linee in una funzione se vuoi (* modificare: * In realtà devi, dato che l'ultima riga è un'istruzione 'return'). Se non sai come definire le funzioni: http://eloquentjavascript.net/chapter3.html. –

+0

Quindi, rimani semplicemente nel corpo di una funzione chiamata "qualche_funzione" e chiamala. – mgw854

4

jQuery.parseHTML() - la funzione potrebbe aiutarti.

http://api.jquery.com/jQuery.parseHTML/

+0

['jQuery.parseHTML'] (https://github.com/jquery/jquery/blob/master/src/core.js#L455-L480) è solo una versione più elaborata di [risposta di Kolink] (http://stackoverflow.com/a/16816777/298053). –

+0

Spero che questa risposta ti aiuti: http://stackoverflow.com/a/3104237/2335272 – DonnyDee

+0

@DonnyDee quella risposta funzionerà solo per HTML che è valido per XML (cioè non tutto l'HTML). –

5

provare il codice qui sotto

var myname = 'John Doe'; 

//This is using Jquery 
var htmltext = '<p style="color:red">'+myname+'This is a test</p>' 
$('#one').html(htmltext); 


//This is pure javascript 
document.getElementById('two').innerHTML='<p style="color:red">'+myname+'This is a test</p>'; 

JSfiddle link

Sto costruendo una stringa e aggiungendo ad un elemento HTML utilizzando HTML() invece che la funzione di testo(). Questo sarà trattato come un tag HTML dal browser e visualizzerà le modifiche nell'interfaccia utente come visto nel violino.

+0

Non dimenticare di aggiungere una spiegazione al codice per coloro che potrebbero non avere familiarità con 'jQuery' o' JavaScript'. –

+0

Questo codice JQUERY è perfetto. Grazie! – BossWalrus

Problemi correlati