Chris: document.all

Hallo,

ich habe 2 aufklappbare Menüs auf meiner Seite.
Das eine öffne oder schließe ich so:
function openCategory(catid)
{
 if (document.all["cat"+catid].style.display=='none')
 {
  document.all["cat"+catid].style.display='';
  document.all["but"+catid].src = '../images/bt/arrow_faq_open.gif';
 }
 else
 {
  document.all["cat"+catid].style.display='none';
  document.all["but"+catid].src = '../images/bt/arrow_faq_default.gif';
 }
}

Das andere Menü schliße und öffne ich aber auch über document.all, daher funktioniert daher nur ein Menü richtig. Wie kann ich denn jetzt das unterscheiden? Also jedes DIV hat ja seine eindetige ID+Namen.

Vielen Dank

Grüße Chris

  1. hi,

    if (document.all["cat"+catid].style.display=='none')

    Das andere Menü schliße und öffne ich aber auch über document.all, daher funktioniert daher nur ein Menü richtig.

    vollkommen irrelevant, document.all ist nur eine art container für alle darunter liegenden objekte.

    Wie kann ich denn jetzt das unterscheiden? Also jedes DIV hat ja seine eindetige ID+Namen.

    du greifst doch jetzt bereits auf explizit bestimmte elemente zu, in dem du hinter document.all als "index" die ID(?) "cat"+catid angibst.
    hier musst du also den code verändern/dynamisch machen, so dass auch elemente mit anderem bezeichner angesprochen werden können.

    btw: das document.all MS-spezifisch ist, und somit in gecko-browsern nicht funktionieren dürfte, ist dir bekannt?
    weitaus sauberer ist der weg über's DOM, mit getElementBy...

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  2. Hi,

    Das andere Menü schliße und öffne ich aber auch über document.all, daher funktioniert daher nur ein Menü richtig.

    Nein, keines funktioniert richtig. document.all gibt es in JavaScript gar nicht, sondern nur in JScript von Microsoft (sowie bei allen Browserherstellern, die unbedingt meinen, auf "ich kenne nur den IE - und da funzt es"-Gelegenheitsprogrammierer Rücksicht nehmen zu müssen. >;->

    Wie kann ich denn jetzt das unterscheiden?

    Tippfehler: Wie kann ich das vermeiden?

    document.getElementById()

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  3. Hi,

    ok habs mit getElementById hinbekommen, jedoch nun noch eine Frage: Ich möchte wenn man einen Untermenüpunkt anklickt und man auf die nächste Seite kommt, dass das Untermenü aufgeklappt bleibt. wie löse ich das? Mit <body onload> z.B. und dann eine entsprechende Funktion die mir das öffnet was übergeben wurde. Also die ID hätte ich dynamisch immer da! Hier mein bisheriger Code:

    function SwitchMenu(obj)
    {
     var img2 = obj + 'img';
     if(document.getElementById)
     {
      var el = document.getElementById(obj);
      var elimg = document.getElementById(img2);
      var ar = document.getElementById("cont").getElementsByTagName("DIV");
      if(el.style.display == "none")
      {
       for(var i=0; i<ar.length; i++)
       {
        ar[i].style.display = "none";
       }
       el.style.display = "block";
       elimg.src = '../images/bt/arrow_open.gif';
      }
      else
      {
       el.style.display = "none";
       elimg.src = '../images/bt/arrow_default.gif';
      }
     }
    }

    Chris

    1. Hi,

      Mit <body onload> z.B. und dann eine entsprechende Funktion die mir das öffnet was übergeben wurde. Also die ID hätte ich dynamisch immer da!

      ? Weißt Du nicht, wie man der "vom Fleck weg" das Menü ausgeklappt darstellt, oder weißt Du nicht, wie der "Ausklapper" wissen soll, was er auszuklappen hat?

      Gruß, Cybaer

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      1. Hi Cybaer

        ich weiß nicht, wie man vom Fleck weg das Menü aufgeklappt ist...

        Grüße

        Christoph

        1. hi,

          ich weiß nicht, wie man vom Fleck weg das Menü aufgeklappt ist...

          in dem du nach dem fertig laden der seite (onLoad) die funktion für das ausklappen aufrufst.

          gruß,
          wahsaga

          --
          "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
          1. Hi wahsage,

            ja stimmt...

            Grüße Chris

            1. Hi,

              ja stimmt...

              IMHO besser direkt nachdem der betreffende (HTML- & JS-)Code vorhanden ist. Sonst macht es nach dem Laden nochmal unschön "plopp"! ;-)

              Wird das Menü in eine (Blind-)Tabelle gepackt, wirkt es IMHO noch besser, da vor der Anzeige fertig gerendert wird.

              Gruß, Cybaer

              --
              Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!