Wie Attributzahl bei style ermitteln?
Olaf
- javascript
Hallo,
ich bekomme per script einige HTML Elemente übergeben, beispielsweise ein <div id=catalog-1...>...</div>
catalog-1 ist mit style="border.....etc.." formatiert, wobei ich nicht weiß, wieviele Attribute in "style" definiert sind.
Genau das würde ich jetzt gerne per Javascript überprüfen. "getAttribute" sieht dafür ganz brauchbar aus, aber damit
kann ich immer nur einen ganz bestimmten Wert abfragen, den ich vorher kennen muss, also beispielsweise getAttribute("fontSize",true);
Jetzt möchte ich natürlich nicht 500 Abfragen fahren, wenn das <div> vielleicht nur zwei Style-Attribute hat. Kann ich die Länge
der Atrribute, die in style="..." definiert sind, nicht für <div> abfragen und dann per Schleife durchgehen?
Hab leider nichts Passendes gefunden.
Danke für Eure Hilfe
Gruß
Olaf
Hellihello
getAttribute("fontSize",true);
fontSize ist das Attribut? Ich hätte jetzt gedachtes wäre "style" oder "class".
frankx
Hi,
getAttribute("fontSize",true);
fontSize ist das Attribut? Ich hätte jetzt gedachtes wäre "style" oder "class".
Der IE kennt getAttribute() auch beim style-Objekt!
Umgekehrt kann der IE (leider) oft nicht via getAttribute() auf Attributwerte zugreifen, wenn dieses Attribut gleichzeitig als eigenes Objekt verfügbar ist (dies ist bei STYLE/style ja der Fall). Der Mozilla beispielsweise macht das richtig, und man kann hier mit getAttribute() den Inhalt es STYLE-Attributes auslesen, mit split() am ";" aufteilen und hat so den realen Inhalt sauber erfaßt inkl. der Anzahl.
Da der IE aber hier eben Probeme macht, kann man real nur, s. Struppi, stur alles durchgehen - und das wegschmeißen, was nicht erwünscht ist. Aber: Hier steht halt nicht(!) das, was real in HTML als Attributwert hinterlegt ist! D.h., bei style:="border: 1px solid blue;" findet man eben u.a. ein "blue" bei borderColor, borderTopColor, ..., sowie auch Defaultwerte wie "0" bei "zIndex".
Gruß, Cybaer
Hallo,
Der Mozilla beispielsweise macht das richtig, und man kann hier mit getAttribute() den Inhalt es STYLE-Attributes auslesen, mit split() am ";" aufteilen und hat so den realen Inhalt sauber erfaßt inkl. der Anzahl.
Dafuer bietet sich object.style.cssText
an, was auch der IE kennt (zumindest ab 5.5).
MfG, Thomas
Dafuer bietet sich
object.style.cssText
an, was auch der IE kennt (zumindest ab 5.5).
Nur als Ergänzung: Den hatte ich auch gesehen - IE 4
Struppi.
Vielen Dank Euch allen
Das hilft mir sehr weiter
Gruss
Olaf
Hi,
Dafuer bietet sich
object.style.cssText
an, was auch der IE kennt (zumindest ab 5.5).
Jep, genauer: alle "modernen" Browser bis auf Opera (bzw. dem Konqueror, der hier ggf. verbuggt ist) können das.
Gruß, Cybaer
Hi,
Jep, genauer: alle "modernen" Browser bis auf Opera (bzw. dem Konqueror, der hier ggf. verbuggt ist) können das.
BTW: Oder kann der Opera das vielleicht auch, obwohl er das styleSheets-Objekt nicht kennt? IMHO unwahrscheinlich, wäre aber natürlich theoretisch möglich.
Gruß, Cybaer
Hellihello,
Umgekehrt kann der IE (leider) oft nicht via getAttribute() auf Attributwerte zugreifen, wenn dieses Attribut gleichzeitig als eigenes Objekt verfügbar ist (dies ist bei STYLE/style ja der Fall).
Gibts denn dafür keine js-klassen wie sarissa für JS/XML oder kann es die logischerweise nicht geben?
frankx
Hi,
Gibts denn dafür keine js-klassen wie sarissa für JS/XML
Wie meinst Du das? Eine Library, die den STYLE-(Attribut-)Wert browserübergreifend ermittelt?
oder kann es die logischerweise nicht geben?
Wenn ja: Nein, das kann es nicht geben. Der IE handelt hier nicht standardkonform, weil er bestimmte Attribute halt falsch behandelt. Und da er keinen Zugriff via getAtribute auf den Attributwert hat, geht es halt nicht - kann man nichts machen.
Alle Möglichkeiten, Eigenschaften stupide durchgehen, cssText abfragen oder auch mit outerHTML den HTML-Code holen und dann das STYLE-Attribut auf diese Art auswerten. liefern nicht das zurück, was real eingetragen wurde. Das Ergebnis ist immer die Interpretation vom IE.
Gruß, Cybaer
ich bekomme per script einige HTML Elemente übergeben, beispielsweise ein <div id=catalog-1...>...</div>
catalog-1 ist mit style="border.....etc.." formatiert, wobei ich nicht weiß, wieviele Attribute in "style" definiert sind.
Genau das würde ich jetzt gerne per Javascript überprüfen. "getAttribute" sieht dafür ganz brauchbar aus, aber damit
Es reicht durchaus [obj].style.attribut;
Jetzt möchte ich natürlich nicht 500 Abfragen fahren, wenn das <div> vielleicht nur zwei Style-Attribute hat. Kann ich die Länge
der Atrribute, die in style="..." definiert sind, nicht für <div> abfragen und dann per Schleife durchgehen?
Ja, aber du kannst auh alle Eigenschften von style abfragen:
var o = document.getElementById('test');
for(var i in o.style) s += i + '=' + o.style[i] + '\n';
alert(s);
Struppi.
Hi,
var o = document.getElementById('test');
s muß auch noch definiert werden:
var o = document.getElementById('test'), s;
Gruß, Cybaer