Guten Morgen,
ich möchte gerade eine Liste aller in einem XML-Dokument vorhandenen Klassen und IDs haben. Außerdem will ich das inline-styling dieser sammeln.
Naja ist nicht ganz richtig, es geht um SVG und es geht eigentlich nur um bestimmte Element-Typen, nämlich alle Formen und <g>.
Mein Problem ist im Grunde, dass JS keine assoziativen Arrays kennt bzw. (soweit ich weiß) nur in Form von Objekten btw. Eigenschaften.
Denn mein Ansatz sah jetzt erstmal so aus:
var all_classes = new Array();
var all_ids = new Array();
var all_elements = document.getElementsByTagName("*");
for (var i=0; i < all_elements.length; i++) {
var nn = all_elements[i].nodeName.toUpperCase();
if (nn=='G'||nn=='RECT'||nn=='PATH'||nn=='LINE'||nn=='CIRCLE'||nn=='ELLIPSE'||nn=='POLYLINE'||nn=='POLYGON') {
if (all_elements[i].className) {
if (all_elements[i].className.baseVal) {
if (all_elements[i].className.baseVal.length > 0) {
if (all_elements[i].style) {
if (all_elements[i].style.length > 0) {
all_classes[all_elements[i].className.baseVal] = all_elements[i].style;
} else {
all_classes[all_elements[i].className.baseVal] = True;
}
} else {
all_classes[all_elements[i].className.baseVal] = True;
}
}
}
}
}
}
oder so (ist jetzt natürlich verkürzt). Man kann auch ein richtiges Objekt dahinter hängen like
all_classes[all_elements[i].className.baseVal] = new Object();
und dann die Style-Angaben als Eigenschaft speichern.
Wie auch immer, das Problem ist, dass all_classes.length immer 0 ergibt, was mich nicht überrascht, ich hab das eh nur geschrieben um zu zeigen was ich will ^^ (komischerweise wirft das allerdings keinen Fehler...)
Also: Ziel der ganzen Geschichte ist alle Klassen und IDs eines SVG-Dokuments zusammen zu tragen, so dass ich sie hinterher auch gut wiederfinde.
Denn anschließend wollte ich die Inline-Styles vielleicht auslagern in ein Style-Element (mal gucken) auf jeden Fall aber möchte ich später auf eine Form (wie shape) klicken und das passende Array-Element gleich finden.
An _ganz_ anderen Lösungen bin ich natürlich auch interessiert.
sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(