shockshell
Erfahrenes Mitglied
Hallo Leute,
ich habe ein Problem mit der DOM Manipulation per Javascript.
Ich möchte an einer bestimmten Stelle ein div mit entsprechenden class und id Attribut einfügen. Das funktioniert auch. Allerdings interpretiert der Browser (bisher nur in FF ausprobiert) die Style Definition die hinter der "Class" steckt überhaupt nicht.
Wenn ich das manipulierte DOM in einer Datei abspeichere und diese Datei dann öffne, dann werden die Styleinformation ausgewertet.
Folgenden Code verwende ich zum Erstellen der Struktur:
Als Ergebnis erhalte ich folgendes Dokument:
Es hat den Anschein, als wenn die Attribute zwar im Text enthalten sind, aber nicht ausgewertet werden. Auch eine nachgelagerte Abfrage document.getElementById("obj1") findet das Objekt nicht.
Das Weglassen des Fragments und das direkte Hinzufügen der geparsten Struktur in das Dokument hat den gleichen Effekt.
Ich kann die Style-Definition die sich hinter dem class-Attribut befindet auch direkt als style-Attribut an das div hängen, dass hat aber leider auch keine Auswirkung.
Ich habe festgestellt, wenn ich die Manipulation über das separate Erzeugen von Elementen und Attributen (nicht über die oben angegebene Template-Variable) inkl. dem Hinzufügen in die DOM-Dtruktur ausführe funktioniert es, dass ist mir aber in Punkto Flexibilität zu starr.
Kann mir jemand sagen was ich falsch mache. Muss ich den DomParser noch irgendwie konfigurieren o.ä.?
Gruß,
Shockshell
ich habe ein Problem mit der DOM Manipulation per Javascript.
Ich möchte an einer bestimmten Stelle ein div mit entsprechenden class und id Attribut einfügen. Das funktioniert auch. Allerdings interpretiert der Browser (bisher nur in FF ausprobiert) die Style Definition die hinter der "Class" steckt überhaupt nicht.
Wenn ich das manipulierte DOM in einer Datei abspeichere und diese Datei dann öffne, dann werden die Styleinformation ausgewertet.
Folgenden Code verwende ich zum Erstellen der Struktur:
Code:
var template='<div class="transition">hi</div>';
....
//Parsen des Templates
var xmlDoc=null;
if(detect("MSIE")){
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load(template);
}else{
xmlDoc=(new DOMParser()).parseFromString(template,"text/xml");
}
var fragment=document.createDocumentFragment();
fragment.appendChild(xmlDoc.firstChild.cloneNode(true));
....
//ID hinzufügen
var divid= document.createAttribute("id");
divid.nodeValue = "obj1";
fragment.setAttributeNode(divid);
//Fragment zum Dokument hinzufügen
document.getElementById("canvas").appendChild(fragment);
Als Ergebnis erhalte ich folgendes Dokument:
HTML:
<div id="canvas" style="clear: both; float: left; height: 95%; width: 100%;">
<div id="obj1" class="transition">hi</div>
</div>
Es hat den Anschein, als wenn die Attribute zwar im Text enthalten sind, aber nicht ausgewertet werden. Auch eine nachgelagerte Abfrage document.getElementById("obj1") findet das Objekt nicht.
Das Weglassen des Fragments und das direkte Hinzufügen der geparsten Struktur in das Dokument hat den gleichen Effekt.
Ich kann die Style-Definition die sich hinter dem class-Attribut befindet auch direkt als style-Attribut an das div hängen, dass hat aber leider auch keine Auswirkung.
Ich habe festgestellt, wenn ich die Manipulation über das separate Erzeugen von Elementen und Attributen (nicht über die oben angegebene Template-Variable) inkl. dem Hinzufügen in die DOM-Dtruktur ausführe funktioniert es, dass ist mir aber in Punkto Flexibilität zu starr.
Kann mir jemand sagen was ich falsch mache. Muss ich den DomParser noch irgendwie konfigurieren o.ä.?
Gruß,
Shockshell
Zuletzt bearbeitet: