Ankündigung

Einklappen
Keine Ankündigung bisher.

Aktives Menü ausgeklappt lassen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Aktives Menü ausgeklappt lassen

    Ich habe ein Menü in meine Seite eingebaut, dass beim anklicken aufklappt. Wenn ich danach auf einen Link klicke, wird das Menü wieder eingeklappt.
    Ich will jetzt aber, dass das Menü mit dem aktiven Link aufgeklappt bleibt.

    Kann man da im Javascript irgendwie eine Abfrage einbauen, die das regelt?

    Hier der Code:

    PHP-Code:
    <script type="text/javascript">
    <!--
    window.onload=montre;
    function montre(id) {
    var d = document.getElementById(id);
    var li = ul.getElementById(id);
        for (var i = 1; i<=10; i++) {
            if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
        }
    if (d) {d.style.display='block';}
    }
    //-->
    </script>

    <dl id="menu">

            <dt style="height:30px; padding-top:10px; background: #f5f5f5;">Abitur</dt>
                
            <dt onclick="javascript:montre('smenu2');"><a href="#">Aufgaben + Lösungen</a></dt>
                <dd id="smenu2">
                    <ul>
                        <li><a href="index4.php?name=<?php echo $typlink?>-01_Abitur-01_Aufgaben + Lösungen + Skripte-01_Analysis" <? if ($nav_left == 1) echo "class=\"nav_left\"" ?>>Analysis</a></li>
                        <li><a href="#" <? if ($nav_left == 2) echo "class=\"nav_left\"" ?>>Analytische Geometrie</a></li>
                        <li><a href="#" <? if ($nav_left == 3) echo "class=\"nav_left\"" ?>>Stochastik</a></li>
                    </ul>
                </dd>    
            <dt onclick="javascript:montre();"><a href="#">Prüfungen + Lösungen</a></dt>
            <dt style="height:30px; padding-top:10px; background: #f5f5f5;">Abitur BaWü</dt>
    </dl>

  • #2
    Man kann da auch einfach ein CSS Class-Attribut setzen.

    Kommentar


    • #3
      Mit der css hab ich es bisher nur hinbekommen, den aktiven Text dick zu schreiben. Mehr leider nich.

      Kommentar


      • #4
        naja, Du mußt das aktive Element dann schon dynamisch durch PHP setzen. Quasi beim Reload dasselbe tun, wie es jetzt JS macht.

        Kommentar


        • #5
          Hmm, habs versucht jetzt mit nem weiteren Javascript code zu regeln, aber das krieg ich nicht hin.
          Mit css und php fehlt mir noch der Ansatz. Weiß nicht, wie ich da was machen könnte.

          Kommentar


          • #6
            Du musst bei einem Seitenreload mit PHP gucken, welche Seite bzw. welchen Link du gecklickt hast und kannst so eine CSS Klasse per PHP in das Menü generieren die das Menüelement als Aktiv markiert. Was anderes macht das JS ja auch nicht. Du klickst auf ein Element und eine CSS Klasse wird hinzugefügt. Nur ist das über JS temporär und bei einem Seiten-Reload nicht mehr vorhanden.

            Kommentar


            • #7
              Ich habe das jetzt mal so versucht, aber so wird da aber nichts aufgeklapptes angezeigt, sondern das menü bleibt zu:

              PHP-Code:
              $nav_link=$_GET['name'];
                      if (
              strpos($nav_link,"Analysis")!== false){
                          echo 
              "<dt style=\"display: block;\"><a href=\"#\">Aufgaben + Lösungen</a></dt>";
                      }
                      else {
                          echo 
              "<dt onclick=\"javascript:montre('smenu2');\"><a href=\"#\">Aufgaben + Lösungen</a></dt>";
                      } 
              Aber das wäre auch keine tolle Lösung, da ich dann ja immernoch überall den String mit dem er vergleichen soll reinschreiben müsste und ich das über jedem Menüpunkt machen müsste. Das sollte aber dynamisch sein..

              Kommentar


              • #8
                Das sollte aber dynamisch sein..
                Solange Deine Menüausgabe nicht dynamisch ist, brauchts das auch nicht zu sein.
                echo "<dt style=\"display: block;\"><a href=\"#\">Aufgaben + Lösungen</a></dt>";
                Im Zusammenhang JS / CSS / class-Attribute empfehle ich immer dieses Vorgehen.

                Kommentar


                • #9
                  Zitat von nikosch Beitrag anzeigen
                  Solange Deine Menüausgabe nicht dynamisch ist, brauchts das auch nicht zu sein.
                  Ja, aber ich brauch da noch ein zweites Menü, dass dann dynamisch geladen wird. Da soll dass dann ja auch so sein.

                  Ich verstehe immer noch nicht ganz, welchen css teil ich ansprechen soll.. Wenn ich den code direkt mal in der css ändere, dann bleibt das menü zugeklappt und kann nicht mehr geöffnet werden, auch wenn der link aktiv ist..

                  Kommentar


                  • #10
                    Lies meinen Link, dann Antwort #2, vielleicht noch #6. Und so oder so, soilltest Du auch die statischen Menüpunkte dynamisch erzeugen, um die Markierung dynamisch zu generieren. Außerdem: Warum zeigst Du uns dann die statischen Sachen, wenns um das andere Menü geht.

                    Kommentar


                    • #11
                      Zitat von nikosch Beitrag anzeigen
                      Außerdem: Warum zeigst Du uns dann die statischen Sachen, wenns um das andere Menü geht.
                      Ich habe zwei Menüs..
                      Dieses hier soll statisch sein und dann hab ich noch ein dynamisches..

                      Kommentar


                      • #12
                        Zitat von nikosch Beitrag anzeigen
                        Lies meinen Link, dann Antwort #2, vielleicht noch #6. Und so oder so, soilltest Du auch die statischen Menüpunkte dynamisch erzeugen, um die Markierung dynamisch zu generieren.
                        Hmm, also ich hab mir die Seite jetzt angeschaut, aber wie kann mir das helfen? Ich steig nicht dahinter und hab mein code jetzt schon zich mal umgeschrieben, aber kommt nie was dabei raus.. Ist echt zum verzweifeln..

                        Kommentar


                        • #13
                          Code:
                          <a href="#" onclick="toggleElementDisplay ('box');">Click me!</a> or 
                          
                          <div id="box">Here ist some content for you!</div>
                          Stell dir vor, der Link wäre dein Menüeintrag und das div Deine aufzuklappende Unterstruktur. Die dynamisch erzeugt wird. Das Verhalten von class aus dem Wiki kehrst Du um (also alles ist hidden, bis ein bestimmtes class-Attribut gesetzt ist). Im Falle der vorausgewählten Menüstruktur ergänzt Du noch ein class="..." (Dein CSS Selector) und hast so den Menüpunkt "offen".

                          Kommentar

                          Lädt...
                          X