peterS.: Objekte in IE6.x und Opera 7.2x

Beitrag lesen

gruss Lutz

TypeError:
'Expression did not evaluate to a function object:
divObj.style.setAttribute'

da hat opera recht - mozilla ist auch nicht einverstanden
   und meldet korrekterweise denselben fehler;

Während IE6.x brav das div-Element anzeigt und in die Textbox
schön [object] schreibt, mach Opera nur Mist! Es weigert sich das
div-Element anzuzeigen:

hier verwechselst Du ursache und wirkung;

Ist das jetzt ein Object oder nicht? Opera benennt das Objekt:
[object HTMLDivElement] statt [object]....?!?!?!?

mozilla tut dies ebenfalls ... die browserhersteller duerfen
   die anbindung des DOM an die javascript-api des browsers
   recht frei gestalten, wobei mozilla die objekte des DOM
   am konsequentestens der javascript-objekthirarchie anpasst;
   msie faellt da wieder mal ab, opera liegt irgendwo dazwischen,
   aber doch naeher zu mozilla als zum msie;

habe gesucht und nix gefunden, was mir folgenden Effekt erklären
bzw. die Lösung hierzu geben könnte.

Was habe ich gelacht...

Du haettest besser gruendlicher debuggt:

<html>
  <head>
    <title>HTMLElementObjekte.html</title>
    <script type="text/javascript">
      function machwas() {
        var divObj = document.getElementById("ichbinwas");

alert(divObj); // bedeutet: alert(divObj.toString());

alert(divObj.constructor);
        /*
          die erzwungene ausgabe eines objektes als string -
          in diesem fall eines div-knotens, welcher sowohl
          in mozilla als auch in opera als "HTMLDivElement"
          umgesetzt ist - hat die sofortige anwendung der
          fuer dieses objekt eingebauten "toString"-methode
          zur folge;
          fuer den msie lautet das ergebnis nun einfach mal
          [object];
        */
        document.getElementById("ausgabe").value = divObj;

alert(typeof divObj.style.setAttribute);
      /*
        "object" in msie, "undefined" in mozilla und opera:

voellig korrekt, dass sich mozilla und opera ueber
        die folgende auskommentierte zeile beschwert haben;
      */
      //divObj.style.setAttribute("visibility","visible",false);

divObj.style.visibility = "visible"; // geht doch!
      }
    </script>
  </head>
  <body onload="machwas()">
    <div style="visibility:hidden;" id="ichbinwas">Hallo Leute</div>
    <input type="textbox" id="ausgabe" value="nochnix" size="50">
  </body>
</html>

by(t)e by(t)e - peterS. - pseliger@gmx.net

--
sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)