uschi renziehausen: CSS-Eigenschaften von divs auslesen

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

  1. 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.

    1. 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*

      1. 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

        1. 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.

  2. 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

    1. 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*

      1. 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

        1. 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

          1. 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

            1. Hallo nochmal

              Ich muss doch keinen Bug melden.
              In Mozilla 0.9.9 geht das nämlich nicht mehr ;-)

              Grüße

              Daniel

              1. 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

            2. 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*

              1. 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

          2. 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*