wimu: getElementById in globaler Variable

Hallöle,

hab' schon überall gesucht, kann aber nix richtiges finden. Folgendes Problem:
Ich möchte in einem externen .js einer Variable ein Element per Id zuweisen; ungefähr so:

  
window.onload = function() {  
     test = document.getElementById('test');  
     }  

Spart einfach viel Schreibarbeit, wenn ich immer wieder auf das gleiche Element zugreife. Funktioniert auch prima im FF und Opera, aber der IE zickt und sagt was wie "Das Objekt unterstützt diese Eigenschaft oder Methode nicht". Im IE klappt es nur, wenn ich aus der globalen eine lokale Variable mache, also

  
     var test = document.getElementById('test');  

nur bringt mir eine lokale Variable gar nix. Irgendeine Idee? Mach' ich irgendwas falsch? Kann man eine lokale Variable im Nachhinein global machen? Oder besser: kann ich irgendwie über das Name-attribut direkt zugreifen, also sowas wie

  
     document.test.innerHTML = 'irgendwas';  

Das klappt bei mir immer nur bei Bildern oder Formular-Elementen, o.ä., nicht aber bei divs oder spans, für die ich das bräuchte.

Vielen Dank im voraus; Grüße,

WiMu

  1. Spart einfach viel Schreibarbeit, wenn ich immer wieder auf das gleiche Element zugreife. Funktioniert auch prima im FF und Opera, aber der IE zickt und sagt was wie "Das Objekt unterstützt diese Eigenschaft oder Methode nicht".

    Dann existiert vermutlich für den IE schon eine Variabel test, da ist der IE ein bisschen pingelig, weil du ein Element mit der IE test hast, glaubt er würde dir helfen, wenn er eine Variabel test anlegt.

    Mach's mal so:

    var test;  
    window.onload = function() {  
         test = document.getElementById('test');  
    };  
    
    

    Struppi.

    1. @@Struppi:

      nuqneH

      Mach's mal so:

      var test;

      window.onload = function() {
           test = document.getElementById('test');
      };

        
      Stattdessen geht auch:  
        
      ~~~javascript
      window.onload = function() {  
           window.test = document.getElementById('test');  
      };
      

      (ohne 'var test;')

      Qapla'

      --
      Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
  2. Hi!

    Ich hab mal etwas rumexperimentiert. (IE6)

    Ich kann Dein Problem nicht nachvollziehen:

    Diesen Code habe ich in einem externen Script:

    window.onload = function()  
    {  
     test = document.getElementById("Inhalt");  
     computedStyle = test.currentStyle;  
     alert(computedStyle.backgroundColor);  
     test.style.backgroundColor = "#969696";  
    }
    

    Der Code macht, was man erwartet.

    Struppi wird recht haben mit seinem Hinweis, denn sobald ein Container in der HTML die ID 'test' bekommt, wirft der IE eine Fehlermeldung.

    --
    "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
          - T. Pratchett
    1. Hi,

      Ich hab mal etwas rumexperimentiert. (IE6)
      Ich kann Dein Problem nicht nachvollziehen:
      test = document.getElementById("Inhalt");

      Entscheidender Unterschied: bei Dir sind Variablenname und ID nicht identisch.

      Das Problem kommt m.E. daher, daß der IE unsinnigerweise für Elemente mit ID bereits selbst eine globale Variable mit Name == ID anlegt.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
      1. Hola!

        Entscheidender Unterschied: bei Dir sind Variablenname und ID nicht identisch.

        Das Problem kommt m.E. daher, daß der IE unsinnigerweise für Elemente mit ID bereits selbst eine globale Variable mit Name == ID anlegt.

        Ja. Hatte ich nicht geschrieben, das ein Element mit der ID 'test' alles versemmelt? *nachguck*

        --
        "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
              - T. Pratchett
  3. Vielen Dank für die schnellen Antworten.

    Hab' nun selbst auch noch ein wenig herumprobiert, und anscheinend mag der IE es nicht, wenn die Variable so heißt, wie die Id, die gespeichert werden soll.

      
    window.onload = function() {  
        irgendeinvariablenname = document.getElementById('irgendwasanderes');  
        }  
    
    

    Funktioniert problemlos :-), auch mit "test" als Variablenname oder Id.

    Danke nochmal.

    Grüße,

    WiMu

    1. Hi!

      Hab' nun selbst auch noch ein wenig herumprobiert, und anscheinend mag der IE es nicht, wenn die Variable so heißt, wie die Id, die gespeichert werden soll.

      Fast. Der IE mag es nicht, wenn eine ID existiert, die so heisst, wie die Variable. Ausser Du erklaerst ihm explizit, dass Du eine neue Variable generierst (z.B. mit var).

      --
      "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
            - T. Pratchett
    2. Hab' nun selbst auch noch ein wenig herumprobiert, und anscheinend mag der IE es nicht, wenn die Variable so heißt, wie die Id, die gespeichert werden soll.

      Sagte ich bereits und wie auch gesagt, kannst du die Probleme verhindern, wenn du die Variabel deklarierst, was sowieso sinnvoll ist.

      Struppi.