CSS-Eigenschaften von divs auslesen
uschi renziehausen
- dhtml
Liebe Leuts,
ich wollte auch mal ein bisserl rumlayern und bin dabei auf ein verständnisproblem gestossen.
ich habe also ein absolut postioniertes div mit vielen schönen eigenschaften. wenn ich die eigenschaften im style-attribut des div-tags notiere, kann ich sie auch wunderbar auslesen. wenn ich sie allerdings mit
#layername {
width:200px;
weitere eigenschaften
}
notiere, dann kriege ich keine rückmeldung, weder im ie5.5 noch in nn6. kann mich bitte jemand aufklären, womit das ursächlich zusammenhängt?
liebe grüße, uschi
Liebe Leuts,
ich wollte auch mal ein bisserl rumlayern und bin dabei auf ein verständnisproblem gestossen.
ich habe also ein absolut postioniertes div mit vielen schönen eigenschaften. wenn ich die eigenschaften im style-attribut des div-tags notiere, kann ich sie auch wunderbar auslesen. wenn ich sie allerdings mit
#layername {
width:200px;
weitere eigenschaften
}
notiere, dann kriege ich keine rückmeldung, weder im ie5.5 noch in nn6. kann mich bitte jemand aufklären, womit das ursächlich zusammenhängt?
liebe grüße, uschi
Du hast dort Stil-Vorgaben definiert, die aber nicht direkt in dein DIV-Tag hineingeschrieben werden. Deshalb kannst du sie auch nicht auslesen.
hallo,
#layername {
width:200px;
weitere eigenschaften
}
notiere, dann kriege ich keine rückmeldung, weder im ie5.5 noch in nn6. kann mich bitte jemand aufklären, womit das ursächlich zusammenhängt?
hast du die divs tatsächlich als <div>s gemacht oder veielleicht als <layer>? (die kennt außer NN4 keiner)
ne andere mögliche ursache wäre, dass der name zwar definiert, aber nicht im tag vergeben wurde.
grüße
willie *jemandderkeineahnunghat*
hallo,
hast du die divs tatsächlich als <div>s gemacht oder veielleicht als <layer>? (die kennt außer NN4 keiner)
ich habe die divs als divs gemacht und auch eine entsprechende id vergeben, also:
<div id="layer_1">irgendwas</div>
und in der css steht dann eben
#layer_1 {
position:absolute;
etc etc.
}
ne andere mögliche ursache wäre, dass der name zwar definiert, aber nicht im tag vergeben wurde.
doch doch, wurde er schon.
liebe gruesse, uschi
Moin Uschi!
<div id="layer_1">irgendwas</div>
#layer_1 {
position:absolute;
etc etc.
}
Aha! Ist doch manchmal besser, genau den Originalcode zu posten.
http://www.w3.org/TR/REC-CSS2/syndata.html#q4
In CSS ist der Underscore nicht als Teil eines Identifiers erlaubt.
So wie ich den Abschnitt verstehe, kannst Du aber wahrscheinlich "layer\_1" oder "layer\00005F1" oder "layer\5F 1" schreiben. Ich persoenlich finde es aber besser, einfach Bindestriche in Identifiern zu verwenden, das kann sicherlich sogar der IE. ;-)
So long
--
Wenn Wahlen etwas ändern könnten, würden sie sofort verboten werden.
Hallo Uschi
Nach W3C DOM geht das so:
getComputedStyle(document.getElementsByTagName("body")[0],null).getPropertyValue("color");
Getestet habe ich das nur im Mozilla
Ob der IE das auch kann, musst du halt ausprobieren.
Grüße
Daniel
hallö,
hab mal getestet. das anhängende beispiel funktioniert _nicht_ in:
MSIE6 - ohne meldung
NN6 - gibt '#000000' zurück ;)
Opera6 - kennt 'getComputedStyle' offensichtlich nicht
<style type="text/css">
<!--
#layername { color:red; }
-->
</style>
<div style="color:blue;" id="layername">bla</div>
<script language="JavaScript">
<!--
document.write( getComputedStyle(document.getElementById("layername"),null).getPropertyValue("color") );
//-->
</script>
grüße!
willie *jemandderüberdomstaunt*
Hallo Willi
MSIE6 - ohne meldung
NN6 - gibt '#000000' zurück ;)
Im aktuellen Mozilla (0.9.9) tut es.
Opera6 - kennt 'getComputedStyle' offensichtlich nicht
getComputetStyle() ist allerdings auch DOM Level 2 oder gar 3.
Für den IE muss man dann also ne MS-"Erfindung" nehmen.
Grüße
Daniel
gugucks daniel und willi :-)))
vielen dank für eure hilfe. wenigstens weiss ich jetzt, wie es theoretisch gehen sollte.
da es ja aber nun mal selbst in den aktuellen browsern nicht funzt, habe ich mir mit einem kleinen trick geholfen.
bevor ich meine eigenschaften abfrage, setze ich einfach im js-script eine style-eigenschaft.
document.getElementById(elId).style.position = "absolute";
danach stehen dann alle eigenschaften zur verfügung (getestet unter ie 5.0, ie 6.0, mozilla 0.9.6 und netscape 6.2, immer unter windoof
liebe gruesse, uschi
Hallo Uschi
danach stehen dann alle eigenschaften zur verfügung (getestet unter ie 5.0, ie 6.0, mozilla 0.9.6 und netscape 6.2, immer unter windoof
Tatsächlich? Ich muss bei Gelegenheit mal überprüfen, ob das sein darf. Womöglich wäre das ein Bug.
Eigentlich sollte das DOM ja nicht das Dokument verändern.
Und wenn es das in diesem Fall nicht tut, dann müssten sich die style-eigenschaften eines Elements ändern, wenn man die Css-Definitionen im Dokumentkopf neu schreibt.
Und das wäre ja fast noch schlimmer.
Grüße
Daniel
Hallo nochmal
Ich muss doch keinen Bug melden.
In Mozilla 0.9.9 geht das nämlich nicht mehr ;-)
Grüße
Daniel
auch nochmal hallo,
deine feststellung bringt mich schlichtweg zum weinen
HOIIIIIIIIIIIIIILLLLLLLLLLLLLLL
Ich muss doch keinen Bug melden.
In Mozilla 0.9.9 geht das nämlich nicht mehr ;-)
trostsuchend, uschi
hallö,
Tatsächlich? Ich muss bei Gelegenheit mal überprüfen, ob das sein darf. Womöglich wäre das ein Bug.
Eigentlich sollte das DOM ja nicht das Dokument verändern.
ist getElementById() [etc.] _nicht_ dafür vorgesehen, die eigenschaft auch zu ändern?
grüße
willie *jemandderüberdieinterpretationstaunt*
hallo Willi
Natürlich kann man mit dem DOM auch das Dokument ändern.
Das DOM soll das nur nicht _von selber_ tun.
Wenn man eine Eigenschaft von style setzt und dann plötzlich alle anderen Eigenschaften, die wo anders festgelegt wurden, auch per style zugreifen kann, wäre genau das passiert.
Grüße
Daniel
hallö,
bevor ich meine eigenschaften abfrage, setze ich einfach im js-script eine style-eigenschaft.
document.getElementById(elId).style.position = "absolute";
danke! :)
... (getestet unter ie 5.0, ie 6.0, ...
noch mal ne faq: hast du die versionen unter _einem_ windoof installiert? wenn ja: WIE?
danke & grüße
willie *jemandderkeineahnunghat*