regex-Frage: pattern für css-eigenschaft
nonano
- javascript
Hallo,
Kann mir jemand helfen, das Muster zu formulieren? Ich will eine Funktion schreiben, mit der man eine beliebige css-Eigenschaft für ein beliebiges Element abfragen kann. Zum Beispiel:
function findStyle(attr, val){
styleTags = document.getElementsByTagName("style");
for (i=0; i<styleTags.length; i++) {
var css = document.getElementsByTagName("style")[i].firstChild.nodeValue;
// jetzt den wert finden, zB für
// (wortgrenze) body (wortgrenze, optional weitere Zeichen ausser'}') { (optional weitere Zeichen ausser'}') val (:) *dasErgebnis* (;)
var re=eval('/\b'+attr+'\b/');
result = css.search(re);
}
return (result);
}
So dass mir
bodyColor = findStyle('body', 'color');
eben die Textfarbe des dokuments zurückliefert.
Hallo,
mir scheint, Du zäumst das Pfert von hinten auf. Die Angaben in <style>
sind nicht die einzig möglichen für Stylesheets. Was ist mit ausgelagerten CSS-Datein und Angaben im style-Attribut?
Du solltest also über document.getElementsByTagName($tagname)[0].style[$eigenschaft]
gehen.
Gruß aus Berlin!
eddi
Oh mann! Du hast recht! Danke!
Sorry, habs jetzt mal getestet, und es geht nur wenn der style direkt im tag definiert ist (MacOSX Safari); ich brauche -- nein: ich will ;-) aber das stylesheet auslesen, was im dokument so definiert ist:
<style type="text/css">
<!--
body {
font-family: Helvetica, Verdana, Arial, sans-serif;
font-weight: bold; color:#241234;
}
h1{text-align:right;}
-->
</style>
und wenn es geht natürlich auch gerne externe styles. Ich schätze, man kann das dann auch irgendwie hinbekommen.
hi,
Sorry, habs jetzt mal getestet, und es geht nur wenn der style direkt im tag definiert ist
Das hätte man dir auch vorher sagen können, und du hättest im Archiv oftmals nachlesen können.
Nochmal zum mitmeisseln:
Über das style-Objekt kannst du nur Werte von CSS-Eigenschaften auslesen, die direkt per style-Attribut am Element, oder zuvor über Javascript gesetzt wurden.
ich brauche -- nein: ich will ;-) aber das stylesheet auslesen, was im dokument so definiert ist: [...]
und wenn es geht natürlich auch gerne externe styles. Ich schätze, man kann das dann auch irgendwie hinbekommen.
computedStyle ist (d)ein Stichwort, wenn du dich für die aktuellen (berechneten) Werte interessierst; und wenn du wissen willst, was in den Stylesheet-Regeln steht, dann cssRules bzw. rules (je nach Browser). http://www.quirksmode.org/dom/w3c_css.html bietet eine nette Kurzübersicht.
gruß,
wahsaga
Hallo,
ups, jetzt habe ich mich auch noch verklickt ;(
Dabei wollte ich "hilfreich" geben, weil ich es nicht vernünftig erklärt hatte.
Gruß aus Berlin!
eddi
Danke @wahsaga!
Das Stichwort ›computedStyle‹ sagte mir bisher nichts, deshalb habe ich wohl falsch gesucht.