2010-03-26 9 views
34

kann ich eine Zeichenfolge in ein HTML-Objekt konvertieren? wie:eine JavaScript-Zeichenfolge in ein HTML-Objekt konvertieren

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

, so dass ich später es von id bekommen und einige Wechsel in seinem Stil

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

Thanx eine Million im Voraus zu tun, Lina

Antwort

24

Sie es nicht tun können, mit nur Methode, wenn Sie einige Javascript-Frameworks wie jQuery verwenden, die es unterstützt ..

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

aber immer noch, es würde nicht von der getElementById gefunden werden, denn dafür muss das Element im DOM sein ... nur im Speicher erstellen, fügt es nicht in das Dom.

Sie müßten append oder appendTo oder after usw. verwenden .. es in dem dom ersten Stelle zu setzen ..

Of'course all diese durch regelmäßige Javascript getan werden kann, aber es wäre mehr Schritte unternehmen, um das zu erreichen, gleich ... und die Logik ist das gleiche in beiden Fällen ..

+20

jQuery ist cool, aber es ist nur JavaScript –

+0

schön Ansatz :) , so kann ich $ schreiben (s) .css ("margin-top") um den oberen Rand zu bekommen und dann ändern Sie es und schreiben Sie es auf die Seite ... Ich LIEBE diese Antwort: D – Lina

+0

froh, dass Sie es mögen Lina :) Ich denke, dass diese Größe/Eigenschaften würden nicht getable sein, bevor sie in das DOM eingefügt werden. Es macht Sinn, weil ein Element dadurch beeinflusst würde, wo es im DOM eingefügt wird Ted .. aber der Verweis auf das Objekt ist immer noch gültig, also sobald Sie es in das DOM einfügen können Sie seine Größe Eigenschaften wie Breite/Höhe/Margen usw. abfragen. –

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

Ja, oder nur 'htmlObject.firstChild' da Sie wissen, dass ist wo es immer sein wird. – bobince

+4

Das ist nicht genau richtig, weil Sie GetElementById nicht auf der erstellten HTMLObject-Instanz aufrufen können. – apocalypz

+0

können Sie das HTMLObject an ein Dokumentfragment anhängen, um getElementById zu verwenden, wie 'var fragment = document.createDocumentFragment(); fragment.appendChild (htmlObject); fragment.getElementById ("meinDiv"). style.marginTop = etwas; ' –

1

Wenn der Browser, den Sie ist Mozilla (Addon-Entwicklung) (nicht sicher, Chrom) zu verwenden, planen Sie die folgende Methode in Javascript Hoffnung

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")); 
}; 

verwenden können das hilft

16

Hatte das gleiche Problem. Ich benutzte einen schmutzigen Trick wie so:

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

Jetzt können Sie Stile, die Art und Weise hinzufügen, die Sie mögen:

htmlObject.style.marginTop = something; 
Verwandte Themen