Michel: GetElementsByName problematisch in IE und Opera (??)

Moin,

Es handelt sich um eine klassische Frage der Art "Im Firefox tut's, aber warum sonst nirgends?"...

Es geht um eine digitale Landkartendarstellung: Auf einem DIV sind zwei weitere DIVs ("bs" & "grenzlayer") positioniert.

Diese sollen nun mittels zweier Checkboxen, "beschriftung" und "grenzlinien", dynamisch ein- und ausgeblendet werden können. Also beim Klick auf die jeweilige Checkbox (oder auf die zugehörigen Labels) wird das Ding mit onclick="anzeige1();" bzw. "anzeige2();" gestartet. Sollte es zumindest. Im Firefox geht alles ohne geringste Probleme, IE7 und Opera hüllen sich jedoch in Schweigen. Die beiden zeigen beim Klick auf die Checkboxen auch keinerlei Fehlermeldungen an.

Ich hab mir schon die Augen quadratisch geguckt. Hat jemand vielleicht ne Idee? Liegt es an getElementsByName?

===================================================================

  
function einblenden(elementname)  
{  
  for( var x = 0; x < document.getElementsByName(elementname).length; i++ )  
  {  
  document.getElementsByName(elementname)[x].style.display='block';  
  }  
}  
  
function ausblenden(elementname)  
{  
  for( var x = 0; x < document.getElementsByName(elementname).length; x++ )  
  {  
  document.getElementsByName(elementname)[x].style.display='none';  
  }  
  
}  
  
function anzeige1 () {  
  if (document.anzeige.beschriftung.checked == true)  
     {  
     einblenden('bs');  
     }  
  else  
     {  
     ausblenden('bs');  
     }  
                       }  
  
function anzeige2 ()  {  
  if (document.anzeige.grenzlinien.checked == true)  
     {  
     einblenden('grenzlayer');  
     }  
  else  
     {  
     ausblenden('grenzlayer');  
     }  
     }  

===================================================================

Grüße aus Hamburg
Michel

--
Ein Problem ist halb gelöst, wenn es klar formuliert ist. (John Dewey)
  1. Moin,

      
    
    >   for( var x = 0; x < document.getElementsByName(elementname).length; i++ )  
    
    

    Das i++ ist übrigens nicht der Fehler. Das ist in Wirklichkeit ein x++.

    Grüße aus Hamburg
    Michel

    --
    Ein Problem ist halb gelöst, wenn es klar formuliert ist. (John Dewey)
  2. Hi,

    Es handelt sich um eine klassische Frage der Art "Im Firefox tut's, aber warum sonst nirgends?"...
    Es geht um eine digitale Landkartendarstellung: Auf einem DIV sind zwei weitere DIVs ("bs" & "grenzlayer") positioniert.

    zusammen mit dem Titel "getElementsByName":

    Hast Du etwa den div-Elementen ein name-Attribut gegeben, obwohl das gar nicht definiert ist in HTML, und wunderst Dich dann, daß das nur zufällig in einem Browser funktioniert?

    Verwende id und getElementById. Beachte: id-Werte müssen eindeutig sein.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Moin,

      Hast Du etwa den div-Elementen ein name-Attribut gegeben, obwohl das gar nicht definiert ist in HTML, und wunderst Dich dann, daß das nur zufällig in einem Browser funktioniert?

      Hmmkay, das macht natürlich Sinn. Vielen Dank.

      Verwende id und getElementById. Beachte: id-Werte müssen eindeutig sein.

      Ja, ich weiß. Und das ist auch n bisschen doof für meine Zwecke. Deshalb meine funktionierende Idee: Innerhalb der divs Anker-Elemente mit name-Attributen definieren und weiter mit GetElementsByName arbeiten.

      Grüße aus Hamburg
      Michel

      --
      Ein Problem ist halb gelöst, wenn es klar formuliert ist. (John Dewey)