![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: Olaf, 28. 02. 2006, 11:43
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
Die folgende Nachricht zum Thema stammt von: frankx, 28. 02. 2006, 11:49
Hellihello
getAttribute("fontSize",true);
fontSize ist das Attribut? Ich hätte jetzt gedachtes wäre "style" oder "class".
frankx
Die folgende Nachricht zum Thema stammt von: Cybaer, 28. 02. 2006, 12:20
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
--
Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
Die folgende Nachricht zum Thema stammt von: Thomas Meinike, 28. 02. 2006, 12:33
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
Die folgende Nachricht zum Thema stammt von: Struppi, 28. 02. 2006, 12:40
»» 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.
--
Javascript ist toll
Die folgende Nachricht zum Thema stammt von: Olaf, 28. 02. 2006, 12:57
Vielen Dank Euch allen
Das hilft mir sehr weiter
Gruss
Olaf
Die folgende Nachricht zum Thema stammt von: Cybaer, 28. 02. 2006, 12:54
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
--
Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
Die folgende Nachricht zum Thema stammt von: Cybaer, 28. 02. 2006, 12:56
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
--
Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
Die folgende Nachricht zum Thema stammt von: frankx, 28. 02. 2006, 16:25
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
Die folgende Nachricht zum Thema stammt von: Cybaer, 01. 03. 2006, 09:07
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
--
Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
Die folgende Nachricht zum Thema stammt von: Struppi, 28. 02. 2006, 11:50
»» 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.
--
Javascript ist toll
Die folgende Nachricht zum Thema stammt von: Cybaer, 28. 02. 2006, 12:25
Hi,
»» var o = document.getElementById('test');
s muß auch noch definiert werden:
var o = document.getElementById('test'), s;
Gruß, Cybaer
--
Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
© 1998-2006
Impressum, Software: Classic Forum