Einzelnen Beitrag anzeigen

quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: [Javascript] Was ist an der Funktion falsch?

  Alt 27. Jan 2008, 16:55
Nein, kommen keine Fehler. Danach habe ich schon geschaut.

Da muss was am Aufruf falsch sein, obwohl der eigentlich richtig ist o.O

Code:
function mShow(e)
{
   if (!e.getElementsByTagName) {
      return;
   }
   
   // Alle Listen im Menü:
   var subLists = e.parentNode.getElementsByTagName("ul");
   
   // Erstmal alle Untermenüs ausblenden, die nicht zum geklickten Eintrag gehören:
   for (var i = 0; i < subLists.length; i++) {
      if (subLists[i].parentNode !== e) {
         subLists[i].style.display = "none";
      }
   }
   
   // Das Untermenü des geklickten Eintrags einblenden:
   var obj = e.getElementsByTagName("ul");
   
   e.getElementsByTagName("ul")[0].style.display = "block";

   for (var i = 0; i < obj.length; i++) {
   obj[0].childNodes[i].style.display = "block";
   }
}
//-->
Selbst wenn ich auf die einzelnen Childnodes des UL zugreife kommt nichts anderes heraus ... auch tagName oder length geht nicht aufzurufen ...

Mmh, irgendwo lag da ein Fehler. Hab die Funktion nochmal umgeschrieben und bin die Struktur von oben nach unten nochmal gegangen ... so klappt es jetzt:
Code:
function mShow(e)
{
   if (!e.getElementsByTagName) {
      return;
   }
   
   // Alle Listen im Menü:
   var subLists = e.parentNode.getElementsByTagName("ul");
   
   // Erstmal alle Untermenüs ausblenden, die nicht zum geklickten Eintrag gehören:
   for (var i = 0; i < subLists.length; i++) {
      if (subLists[i].parentNode !== e) {
         subLists[i].style.display = "none";
      }
   }
   
   // Das Untermenü des geklickten Eintrags einblenden:
      var mnu   = document.getElementById('menu');
   var toplis = mnu.getElementsByTagName('li');

   for (var it = 0; it < toplis.length; it++)
   {
      var sublis = toplis[it].getElementsByTagName('li');

      for (var is = 0; is < sublis.length; is++)
         if (sublis[is].style)
            sublis[is].style.display = (toplis[it] == e) ? 'block' : 'none';
   }
}
//-->
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat