2010-03-26 27 views
34

posso convertire una stringa in un oggetto html? come:conversione di una stringa javascript in un oggetto html

string s = '<div id="myDiv"></div>'; 
var htmlObject = s.toHtmlObject; 

modo che io possa in seguito farlo da id e fare qualche cambiamento nel suo stile

var ho = document.getElementById("myDiv").style.marginTop = something; 

Thanx un milione in anticipo, Lina

risposta

24

non è possibile farlo con il solo metodo, a meno che non si usi un framework javascript come jquery che lo supporta ..

string s = '<div id="myDiv"></div>' 
var htmlObject = $(s); // jquery call 

ma ancora, non sarebbe stato trovato dallo getElementById perché per farlo funzionare l'elemento deve essere nel DOM ... solo creando nella memoria non lo inserisce nella dom.

Lei avrebbe bisogno di utilizzare append o appendTo o after ecc .. per dirla nel DOM prima ..

Of'course tutti questi può essere fatto attraverso un regolare javascript ma ci vorrebbe più passi per realizzare il stessa cosa ... e la logica è la stessa in entrambi i casi ..

+20

jQuery è freddo ma è solo JavaScript –

+0

approccio bello :) così posso scrivere $ (s) .css ("margin-top") per ottenere il margine superiore e quindi modificarlo e scriverlo alla pagina ... I LOVE questa risposta: D – Lina

+0

contento che ti piaccia Lina :) Penso che quella dimensione/proprietà non sarebbero ottenibili prima di inserirle nel DOM. Ha senso, perché un elemento sarebbe influenzato da dove nel DOM viene inserito ted .. ma il riferimento all'oggetto è ancora valido, quindi una volta inserito nel DOM puoi interrogarne le proprietà come larghezza/altezza/margini ecc. –

52
var s = '<div id="myDiv"></div>'; 
var htmlObject = document.createElement('div'); 
htmlObject.innerHTML = s; 
htmlObject.getElementById("myDiv").style.marginTop = something; 
+4

Sì, o semplicemente "htmlObject.firstChild' poiché sai che è dove sarà sempre. – bobince

+4

Questo non è esattamente corretto, perché non è possibile chiamare getElementById sull'istanza di htmlObject creata. – apocalypz

+0

è possibile aggiungere htmlObject a un frammento di documento per utilizzare getElementById, come 'var fragment = document.createDocumentFragment(); fragment.appendChild (htmlObject); fragment.getElementById ("myDiv"). style.marginTop = something; ' –

3

Oltre a Gaby il metodo di alias, possiamo trovare elementi all'interno htmlObject in questo modo -

htmlObj.find("#box").html(); 

Fiddle è disponibile qui - http://jsfiddle.net/ashwyn/76gL3/

1

Se il browser che si prevede di utilizzare è Mozilla (sviluppo Addon) (non sono sicuro di Chrome) è possibile utilizzare il seguente metodo in Javascript

function DOM(string) 
{ 
    var {Cc, Ci} = require("chrome"); 
    var parser = Cc["@mozilla.org/xmlextras/domparser;1"].createInstance(Ci.nsIDOMParser); 
    console.log("PARSING OF DOM COMPLETED ..."); 
    return (parser.parseFromString(string, "text/html")); 
}; 

Speranza questo aiuta

16

Aveva lo stesso problema. Ho usato un trucco sporco in questo modo:

var s = '<div id="myDiv"></div>'; 
var temp = document.createElement('div'); 
temp.innerHTML = s; 
var htmlObject = temp.firstChild; 

Ora, è possibile aggiungere gli stili nel modo desiderato:

htmlObject.style.marginTop = something; 
Problemi correlati