Markus Mühlich: Opera 5.01 ++ getElementById

Guten Abend,

eins vorweg:
ich habe diese Frage bereits in einem anderem Forum gestellt - ohne zu Wissen, daß dieses Forum wieder eröffnet wurde. Daher bitte ich evtl. Ärger über gestreute Postings zu Entschuldigen.

Hintergrund:
Ich möchte einen Bereich (div) dynamisch in seiner Höhe verändern. Dazu habe ich im HTML-Head ein StyleSheet mit absoluter Positionierung, Höhe, Breite, Links, Oben und Hintergrundfarbe definiert.

Leider wird jedoch die Anweisung document.getElementById("Bereich").style.height = n von Opera 5.01 ignoriert. Das gleiche Resultat erhalte ich, wenn ich die Breite verändern möchte.

Überraschend lassen sich jedoch die Eigenschaften "left" und "top" verändern. Warum denn dann nicht "height" und "width"?

Vielleicht habt Ihr eine Idee (aber bitte nicht: Vergess Opera)?

Danke und Gruß
Markus

  1. Hallo!

    Leider wird jedoch die Anweisung document.getElementById("Bereich").style.height = n von Opera 5.01 ignoriert. Das gleiche Resultat erhalte ich, wenn ich die Breite verändern möchte.

    Überraschend lassen sich jedoch die Eigenschaften "left" und "top" verändern. Warum denn dann nicht "height" und "width"?

    Überschätze Opera bezüglich DHTML nicht. Opera kann nur ein wenig mit Layer, seit Version 5.* umgehen, z.B. visibility, und wie Du fest gestellt hast, left und top. Soweit bin ich noch nicht gegangen unter Opera. Anscheit bist Du mit width und height an einer Grenze angekommen.

    Vielleicht habt Ihr eine Idee (aber bitte nicht: Vergess Opera)?

    Nein, ich schätze Opera sehr. Sogar so, das ich mir Opera für Linux und Win gekauft habe. Unter Linux schätze ich Opera sehr. Besonders für dieses Forum verwende ich Opera sehr gern.

    MfG, André Laugks

    1. Ne gute Anlaufadresse für was Opera 5 kann ist

      http://www.opera.com/opera5/specs.html

      Im Allgemeinen hat Opera 5 nicht alzu viel mit DHTML am Hut.
      Man kann zwar die Höhe einer Ebene verändern, hat meines Wissens aber kein Effekt.

      document.getElementById("test").style.pixelHeight = 200;

      // Kontrolle mit
      alert(document.getElementById("test").style.pixelHeight);

      gruss
      Thorsten

      1. Hallo,

        Danke Euch beiden.

        pixelHeight bewirkt tatsächlich eine Veränderung der Größe. Zumindest wird ein schwarzer Testbereich der vorher 300px hoch war, nach ...style.pixelHeight = 500 in der neuen Höhe auch angezeigt.

        Allerdings verstehe ich immer noch nicht die Logik dahinter:

        Frage ich die Eigenschaften width und height mit alert(...style.width/height)ab, erhalte ich undefined - also exisitiert das Objekt für Opera 5.01 nicht. Ein alert auf left und top liefert mir Werte zurück.

        Nur wie kann ein Objekt das für Opera 5.01 nicht existiert die Eigenschaften left und top haben?

        Ich gebe zu, daß diese Fragestellung rein theoretischer Natur ist und mich nur aus sportlichem Ehrgeiz interessiert, da mein Hauptanliegen ja gelöst ist.

        Gruß und Danke
        Markus

        1. Hallo!

          Frage ich die Eigenschaften width und height mit alert(...style.width/height)ab, erhalte ich undefined - also exisitiert das Objekt für Opera 5.01 nicht. Ein alert auf left und top liefert mir Werte zurück.

          Nur wie kann ein Objekt das für Opera 5.01 nicht existiert die Eigenschaften left und top haben?

          Rufst Du diese Eigenschaft ab, bevor der Layer geladen ist? mit Objekt ist nicht die Eigenschaft gemeint, sondern der Layer. Also erst die Eigenschaften von einem Layer abfragen, wenn er geladen ist.

          z.B.

          funktion sag_es_mir()
             {
               alert(document.getElementById.Layerid.style.pixelWidth);
             }

          <body onLoad="sag_es_mir()">

          <div id="Layerid"></div>

          Das geht schief, weil die Eigenschaft abgefragt wird, bevor der Layer geladen ist.

          alert(document.getElementById.Layerid.style.pixelWidth);

          <div id="Layerid"></div>

          MfG, André Laugks

          1. Hallo,

            ist schon klar, daß das Objekt meiner Begierde (layer) erst geladen sein muß.

            <style type="text/css">
            #div1 {position:aboslute;top:50;left:50;width:100;height:200;background-color:#000000;}
            </style>

            <body>
            <div id="div1"></div>

            <script>
            alert (document.getElementById("div1").style.left)
            alert (document.getElementById("div1").style.height)
            </script>
            </body>

            Dieser Konstrukt liefert mir in Opera 5.01 für die Eigenschaft left den Wert 50, für die Eigenschaft height undefined.

            Warum kann ein undefiniertes Objekt mit einer nicht definierten Eigenschaft bei Opera 5.01 eine Eigenschaft left mit dem Wert 50 haben?

            Diese Logik ist für mich nicht verständlich. Wobei dies - wie geschrieben - für mich nur noch rein theoretischer Natur ist, aber deswegen nicht weniger interessant

            Gruß
            Markus

            1. Hallo!

              ist schon klar, daß das Objekt meiner Begierde (layer) erst geladen sein muß.

              Ok! Ich dachte ja nur ... :-)

              Dieser Konstrukt liefert mir in Opera 5.01 für die Eigenschaft left den Wert 50, für die Eigenschaft height undefined.

              Wie Du fest gestellt hat, gibt es wohl Probleme mit height/width. Vielleicht wird deshalb undefined zurück gegeben. Hast Du das schon einmal mit Opera5.11 versucht? Vielleicht kann Opera5.11 height/width.

              MfG, André Laugks