MCTimotheus: Das Objekt unterstützt diese Eigenschaft oder Methode nicht

Hallo,

ich hab folgendes kleines Skript:

var deb_werkzeuge_active = false;

function deb_werkzeuge_hide() {
if(deb_werkzeuge_active == false) {
deb_werkzeuge = document.getElementById("deb_werkzeuge");
deb_werkzeuge.style.display = "none";
}
}

und folgenden BODY-Tag:

<body onfocus="deb_werkzeuge_hide();">

und zum Schluss noch folgenden DIV:

<div id="deb_werkzeuge" style="position:absolute; display:none; width:200px; left:0px; top:0px">
   Inhalt
</div>

Im Firefox funktioniert dies Einwandfrei, er blendet immer beim onfocus des BODY das kleine DIV aus, allerdings nicht im IE der wirft die Fehlermeldung: "Das Objekt unterstützt diese Eigenschaft oder Methode nicht" und ich kann mir nicht erklären warum ?!

Den Fehler gibts übrigens an dieser Stelle: "deb_werkzeuge = document.getElementById("deb_werkzeuge");"

Danke für eure Ratschläge ...

  1. hi,

    deb_werkzeuge = document.getElementById("deb_werkzeuge");

    Verwende für die Variable mal einen anderen Namen.

    Wenn du ein Element mit der ID "deb_werkzeuge" hast, stellt dir der IE automatisch eine Referenz darauf unter dem Namen deb_werkzeuge zur Verfügung - und deshalb gibt's dann solche Komplikationen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hallo,

    deb_werkzeuge = document.getElementById("deb_werkzeuge");

    in Ergänzung zu dem, was wahsaga schon geschrieben hat: wenn Du an irgendeiner Stelle Deines Scripts eine Variable ohne das Schlüsselwort var deklarierst, so bewegst Du Dich im globalen Namensraum (die Variable ist damit eine Eigenschaft des window-Objekts). Und in diesem globalen Namensraum existiert im IE bereits eine Variable namens "deb_werkzeuge" - so wie es wahsaga schon erwähnt.

    Dein Problem ist ganz einfach behoben, wenn Du schreibst:
    var deb_werkzeuge = document.getElementById("deb_werkzeuge");

    In diesem Fall überschreibst Du innerhalb Deiner Funktion, also im  lokalen Namensraum dieses Blocks, das globale Objekt deb_werkzeuge.

    So long,
    Mr. Horse

    --
    "No, Sir, I don't like it."
  3. Danke für eure Ratschläge ...

    Das gleiche wie in deiner anderen Frage (mit dem Passwort): das Problem ist der unsaubere Stil (in verbimndung mit dem kaputten IE)

    Struppi.

    --
    Javascript ist toll (Perl auch!)