Daniel Körtvélyessy: probleme mit getElementById()

Hallo liebe Leute,

ich habe da so ein kleines Problem mit einem Skript.

Das unten stehende Skript in in einer link seite eingebaut, welche aus mehreren ebenen (<div> tags + CSS) besteht. In jedem dieser Ebenen ist eine Link-Kategorie gelistet. Die die gesamte Liste recht lang ist, wollte ich die einzelnen Ebenen "zusammenklappbar" machen.

Dazu habe ich neben der Ebebeb überschrift einen <input> Button und ein verstecktes feld gesetzt. Nun werden beim Laden der Seite die Ebenen durch onLoad="hideall();" "zusammengeklappt" und in das jeweilige versteckte feld der Wert "hidden" gesetzt.

Beim Klick auf den Button wird die Funktion expand() aufgerufen und die ID's der Ebene, des Buttons und des versteckten Feldes übergeben.

jetzt mein Problem: Unter Firefox (1.0.7) läuft das Script ohne Probleme. Beim IE6 SP1 kommt eine Fehlermeldung "Objekt erwartet". Da IE an version 4 glaube ich das DOM versteht, sollte eigendlich die getElementById() Funktion klappen, oder habe ich irgendwo was falsch gemacht? und wieso klappt es dann bei Firefox??

Danke für Tips und Hinweise,
Daniel

<script language="JavaScript" type="text/javascript">

function expand(layerID, HlayerID, ButtonID) {

if (document.getElementById(HlayerID).value != 'hidden')
{
    document.getElementById(layerID).style.display = 'none';
    document.getElementById(HlayerID).value = 'hidden';
    document.getElementById(ButtonID).value = '+';
} else {
    document.getElementById(layerID).style.display = 'block';
    document.getElementById(HlayerID).value = 'visible';
    document.getElementById(ButtonID).value = '-';
}

}

function hideall() {
/* Ebenen, in denen die Links stehen */
    var layers = new Array('SolarObs','AstroInsti','SolarNeutri','Magdata','Gallery','Movies');

/* versteckte Felder */
    var hiddenfields = new Array('HideSolObs','HideSolNeu',HideAstroInst','HideMagDat', 'HideGallery','HideMovie');

/* Die Buttons */
   var buttons = new   Array('ExSolOb','ExSolNu','AstroInst','MagDatB','GalleryB','MovieB');

for (var i = 0; i<7; i++) {
       document.getElementById(layers[i]).style.display = 'none';
       document.getElementById(hiddenfields[i]).value = 'hidden';
       document.getElementById(buttons[i]).value = '+';
  }
}
</script>

  1. Hallo,

    jetzt mein Problem: Unter Firefox (1.0.7) läuft das Script ohne Probleme.

    Sicher? Ruf mal im FF Extras-JavaScript-Konsole auf.

    function hideall() {
    /* Ebenen, in denen die Links stehen */
        var layers = new Array('SolarObs','AstroInsti','SolarNeutri','Magdata','Gallery','Movies');

    //Das Array hat 6 Elemente [0]...[5]

    /* versteckte Felder */
        var hiddenfields = new Array('HideSolObs','HideSolNeu',HideAstroInst','HideMagDat', 'HideGallery','HideMovie');

    //Das Array hat 6 Elemente [0]...[5]

    /* Die Buttons */
       var buttons = new   Array('ExSolOb','ExSolNu','AstroInst','MagDatB','GalleryB','MovieB');

    //Das Array hat 6 Elemente [0]...[5]

    for (var i = 0; i<7; i++) {
           document.getElementById(layers[i]).style.display = 'none';

    //i läuft hier von 0 bis 6 bei layers[6] gibt es einen Fehler.

    viele Grüße

    Axel

    1. //i läuft hier von 0 bis 6 bei layers[6] gibt es einen Fehler.

      viele Grüße

      Axel

      Hallo Axel,

      Wer zählen kann, sollte also keine Probleme mehr haben ;-))

      1000 x Dank!!

      Gruß, Daniel