Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrere div's mit gleichen ID anzeigen / ausblenden

Einklappen

Neue Werbung 2019

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

  • Mehrere div's mit gleichen ID anzeigen / ausblenden

    Hallo,

    vielleicht kann mir jemand einen Tipp geben, wie ich folgendes realisieren kann.

    Ich habe auf einer HTML-Seite viele DIV Elemente.

    Code:
    <div id="menu" style="display:none;">Inhalt2</div>
    <div id="menu" style="display:none;">Inhalt2</div>
    <div id="menu" style="display:none;">Inhalt3</div>
    Alle diese DIV Container möchte mit einem Klick anzeigen lassen auf einen Link anzeigen lassen. Dafür habe ich diese Funktion:

    Code:
    function soundso(id)
    {
        if(document.getElementById(id).style.display=="none") {
            document.getElementById(id).style.display = "";
        }else {
    	document.getElementById(id).style.display="none";
        }
        return true;
    }
    Bei oben genannter Funktion lässt sich nur der erster DIV Container anzeigen, alle anderen aber nicht.

    Wie kann ich Funktion so umbauen, dass es alle DIV Conteiner angezeigt werden?
    Ich lerne PHP und es macht mir Spass!

  • #2
    Halloo!!!
    sagt dir ID was?
    ID bedeutet einmalig und kann in einem Document nur ein mal vorkommen.
    also
    1) alle ids die 2 mal vorkommen entfernen
    2) statt ids machst du attribut name mit dem wert menu
    name="menu"
    3) du änderst deine function so
    Code:
    function soundso(name) 
    { 
        divs=document.getElementsByName(name);
      for(i=0;i<divs.length;i++){
         divs[i].style.display=(divs[i].style.display=="none") ?"block":"none"; 
      }
    }
    Slava
    http://bituniverse.com

    Kommentar


    • #3
      Garnicht, weil du das eindeutige ID-Attribut mehrfach belegst.

      Code:
      <div class="element-closed" id="content-1">inhalt 1</div>
      <div class="element-closed" id="content-2">inhalt 2</div>
      <div class="element-closed" id="content-3">inhalt 3</div>
      Code:
      div.element-closed {
        display : none;
      }
      div.element-open {
        display : block;
      }
      Code:
      var divList = document.getElementsByTagName("DIV");
      for (var div, i = 0, ix = divList.length; i < ix; ++i) {
        div = divList[i];
        if (div.className.match(/\belement-closed\b/)) {
          div.className = div.className.replace(/\belement-closed\b/, "element-open");
        }
      }
      Einzeln gehts natürlich auch:
      Code:
      with (document) {
        getElementById("inhalt-1").style.display = "none";
        getElementById("inhalt-2").style.display = "none";
        getElementById("inhalt-3").style.display = "none";
      }
      Von mir aus auch als Schleife.

      Kommentar


      • #4
        @Zergling
        meine meinung nach ist es besser mit attribut name=X die DIVs gekennzeichnen und dann in einer schleife erledigen.
        Slava
        http://bituniverse.com

        Kommentar


        • #5
          name war mir eigentlich nur für Formular-Elemente ein Begriff, wenn das aber ein gültiges Attribut ist, klar, ist bestimmt schneller.

          Kommentar


          • #6
            danke
            das Problem ist, ich weiss nicht wieviele DIVs gibt
            Es können auf einer Seite 5 auf anderen 20 sein

            kann man elemente bzw. IDs irgendwie durchzählen?
            möchte keine Schleife 50x durchlaufen wenn es nur 5 DIVs sind
            Ich lerne PHP und es macht mir Spass!

            Kommentar


            • #7
              Sehen wir den gleichen Thread? Augen auf!

              Kommentar


              • #8
                Zitat von phpbeginner
                danke
                das Problem ist, ich weiss nicht wieviele DIVs gibt
                Es können auf einer Seite 5 auf anderen 20 sein
                dafür habe ich dir doch angeboten bei divs die attribut name mit dem wert 'menu' einzufügen. attribut 'name' darf mehrere mals vorkommen.
                Slava
                http://bituniverse.com

                Kommentar


                • #9
                  Hm!
                  meine code funktioniert aber nur in Firefox
                  IE macht nicht mit. Also hat Zergling doch Recht, dass 'name' nur bei formularelementen verwendet wird.
                  Slava
                  http://bituniverse.com

                  Kommentar


                  • #10
                    Als Universalattribut bietet sich eigentlich nur class an. Die Gültigkeit von Attributen für bestimmte Tags kann man in der Selfhtml-Attributrefenz nachlesen.
                    Den Zugriff auf class-markierte Elemente über eine selbstgeschriebene getElementsByClass () Funktion habe ich in einem Tutorial ausführlich beschrieben: http://www.phpfriend.de/forum/ftopic62110.html.
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar

                    Lädt...
                    X