kampus: Array durchlaufen

hi,
ich hab verschiedene elemente, welchen ich dieselbe hintergrundfarbe zuweisen möchte. daher mach ich einen array mit den element-ids als string und übergebe den einer funktion:

function setBackgroundBackToDefault(obj)
{
 for (var i = 0; i < obj.length; ++i) { document.getElementById(obj[i]).style.backgroundColor = '#F7F7F7'; }
}

in der javascript konsole kommt dann allerdings ein fehler, id undefined.
mache ich ein alert kommt der richtige wert. was läuft falsch?

vielen dank

  1. Ich würde dir gerne helfen, hab das aber nicht so genau verstanden. Von welcher id sprichst du? In dem Scriptauszug sehe ich keine Variable oder kein Element das id heißt.
    Ansonsten, wenns nicht gerade der selbe Fehler ist den ich auch habe, sehe ich an dem Script keinen Fehler.
    Es wäre sicher hilfreich etwas mehr vom Script zu sehen. Oder aber nen Beispiel zu geben was in obj steht.
    Gruß Artis

    1. Es wäre sicher hilfreich etwas mehr vom Script zu sehen. Oder aber nen Beispiel zu geben was in obj steht.

      ...
      obj = new Array('menu1', 'menu2', 'menu3', 'menu4');
      ...

      <body onload="setBackgroundBackToDefault(obj);">

      function setBackgroundBackToDefault(obj)
      {
       for (var i = 0; i < obj.length; ++i) { document.getElementById(obj[i]).style.backgroundColor = '#F7F7F7'; }
      }

      obj = new Array('menu1', 'menu2', 'menu3', 'menu4');

      ich seh auch keinen fehler :( aber deshalb frag ich ja hier :)

      1. function setBackgroundBackToDefault(obj)
        {
        for (var i = 0; i < obj.length; ++i) { document.getElementById(obj[i]).style.backgroundColor = '#F7F7F7'; }

        Wie wär's, wenn du hier einfach prüfst ob das betreffende Element überhaupt existiert?

        Struppi.

        --
        Javascript ist toll (Perl auch!)
        1. function setBackgroundBackToDefault(obj)
          {
          for (var i = 0; i < obj.length; ++i) { document.getElementById(obj[i]).style.backgroundColor = '#F7F7F7'; }

          Wie wär's, wenn du hier einfach prüfst ob das betreffende Element überhaupt existiert?

          deshalb hab ich ja mit alert() geschaut obs die richtigen werte drinhat, und die stimmen mit den ids überein

          oder wie meinst du das?

          1. Wenn ich das nun noch richtig weiß meint er glaub ich das hier:

            function setBackgroundBackToDefault(obj)
            {
             for (var i = 0; i < obj.length; ++i) {
              if(document.getElementById(obj[i]) {
               document.getElementById(obj[i]).style.backgroundColor = '#F7F7F7';
              }
             }
            }

            Damit dürftest du überprüfen ob das Element existiert. Wenn es das nicht tut, dann gibt er keine Fehlermeldung aus, aber es ändert sich auch nichts.

          2. function setBackgroundBackToDefault(obj)
            {
            for (var i = 0; i < obj.length; ++i) { document.getElementById(obj[i]).style.backgroundColor = '#F7F7F7'; }

            Wie wär's, wenn du hier einfach prüfst ob das betreffende Element überhaupt existiert?
            deshalb hab ich ja mit alert() geschaut obs die richtigen werte drinhat, und die stimmen mit den ids überein

            oder wie meinst du das?

            du benutzt eigenschaften eines Objekts ohne zu prüfen ob es überhaupt exisiert, das ist schlechter Stil

            for (var i = 0; i < obj.length; ++i) {  
            var o = document.getElementById(obj[i])  
            if(o) o.style.backgroundColor = '#F7F7F7';  
            else alert('Die ID:' + obj[i] + ' existiert nicht!');  
            }  
            
            

            Struppi.

            --
            Javascript ist toll (Perl auch!)