• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Tabelle mit Toggle erstellen

Earlenrico

Neues Mitglied
Hallo zusammen, ich möchte hier ein neues Thread aufmachen.

Der Grundgedanke entstand vor ca. 3 Jahren. URL: https://www.html.de/threads/div-container-mit-tabelle-und-toggle.60896/

Ich möchte eine Tabelle erstellen von CD‘s.

Ich möchte, dass in der Tabelle stehen:

Name der / des Albums

CD 1 eventl. CD 2

Titel und Länge des Titels

Was nicht das Problem ist.

Mein Problem ist, ich möchte,

Schritt: Klick auf das Album. CD 1 eventuell CD 2 sich öffnet.
Schritt: Klick auf CD 1, die Musiktitel erscheinen. Das ganze für eventuell CD 2.

Dann das ganze wieder schließen.

Schritt: Klick auf CD 1, die Musiktitel verschwinden.
Schritt: Klick auf das Album, CD 1 eventuell CD 2 verschwinden.

Ich hänge hier einen Code von damals an, der teilweise auch funktioniert. Ich hätte diesen Code aber am liebsten ohne Javascript, sondern nur in CSS. Wenn es einfacher ist, mit Javascript.

Code:
    Gestern um 11:14

    Lesezeichen hinzufügen
    #5

Man sollte es nicht zu umständlich machen...

Code:

<!DOCTYPE HTML>
<html lang=de>
  <meta charset=utf-8>
  <title>my CD</title>
  <link rel=stylesheet href=https://unpkg.com/@picocss/pico@latest/css/pico.min.css>
  <script src=https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js></script>
  <style>
    th {
        font-weight: bold;
        color: red;
    }
    tbody tr:first-child th:first-child{
        cursor:pointer;
    }
  </style>
  <script>
    $(document).ready( () =>
        $( "tbody tr:first-child th:first-child" )
          .click( el  =>
            $(el.target)
             .closest('tbody').find('tr:first-child~tr').toggle()
        )
    )
  </script>
<body class=container>
  <table>
    <thead>
      <tr>
        <th>Lfd. Nr
        <th colspan="3">Name der CD
        <tr>
        <th>01
        <th colspan="3">100 Rock Hits - The Sound of my Life
    <tbody>
      <tr>
        <th>cd1<th>Interpret<th>Titel<th>Zeit
      <tr>
        <td>01.<td>Golden Earring
        <td>Radar Love<td>05:05
      <tr>
        <td>02.<td>Heart
        <td>Barracuda<td>04:24
      <tr>
        <td>03.<td>Judas Priest
        <td>Living After Midnight<td>03:31
      <tr>
        <td>04.<td>Alice Cooper
        <td>No More Mr. Nice Guy<td>03:07
    <tbody>
      <tr>
        <th>cd2<th>Interpret<th>Titel<th>Zeit
      <tr>
        <td>01.</td><td>Golden Earring
        <td>Radar Love<td>05:05
      <tr>
        <td>02.<td>Heart
        <td>Barracuda<td>04:24
      <tr>
        <td>03.<td>Judas Priest
        <td>Living After Midnight<td>03:31
      <tr>
        <td>04.<td>Alice Cooper
        <td>No More Mr. Nice Guy<td>03:07
        <tr>
    <tbody>
        <th>02.
        <th colspan="3">Andrea Bocelli - Cieli Di Toscana</th>
        <tr>
        <td>01.</td>
        <td>Andrea Bocelli</td>  
        <td>Chiara</td>  
        <td>04:04</td>


  </table>

Ich habe mir ein HTML-Gerüst gebaut, um darauf aufbauen zu können.

HTML:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>musik</title>
</head>

<body>
   
    <table border="1">
                <thead>
                    <tr>
                        <th>Lfd. Nr.</th>
                        <th colspan="3">Name der CD</th>
                    </tr>
                </thead>
                <tbody>  
                    <tr>
                        <th>01.</th>
                        <th colspan="3">100 Rock Hits - The Sound of my Life</th>
                    </tr>
                   
                    <tr>
                        <th>CD_01</th>
                        <th>Interpret</th>
                        <th>Titel</th>
                        <th>Zeit</th>
                    </tr>
                    <tr>
                        <td>01.</td>  
                        <td>Golden Earring</td>  
                        <td>Radar Love</td>  
                        <td>05:05</td>
                    </tr>
                    <tr>
                        <td>02.</td>
                        <td>Heart</td>
                        <td>Barracuda</td>
                        <td>04:24</td>
                    </tr>
                    <tr>
                        <td>03.</td>
                        <td>Judas Priest</td>
                        <td>Living After Midnight</td>
                        <td>03:31</td>
                    </tr>
                    <tr>
                        <td>04.</td>
                        <td>Alice Cooper</td>
                        <td>No More Mr. Nice Guy</td>
                        <td>03:07</td>
                    </tr>
                    <tr>
                        <th>CD_02</th>
                        <th>Interpret</th>
                        <th>Titel</th>
                        <th>Zeit</th>
                    </tr>
                    <tr>
                        <td>01.</td>
                        <td>Golden Earring</td>
                        <td>Radar Love</td>
                        <td>05:05</td>
                    </tr>
                    <tr>
                        <td>02.</td>
                        <td>Heart</td>
                        <td>Barracuda</td>
                        <td>04:24</td>
                    </tr>
                    <tr>
                        <th>02.</th>
                        <th colspan="3">Andrea Bocelli - Cieli Di Toscana</th>
                    </tr>
                    <tr>
                        <th>CD_01</th>
                        <th>Interpret</th>
                        <th>Titel</th>
                        <th>Zeit</th>
                    </tr>
                    <tr>
                        <td>01.</td>
                        <td>Andrea Bocelli</td>  
                        <td>Chiara</td>  
                        <td>04:04</td>
                    </tr>
                </tbody>
   
    </table>
   
</body>
</html>
Vielen Dank für eure Hilfe bzw. Vorschläge. Mit freundlichen Grüßen Enrico
 
Zuletzt bearbeitet:
@Sempervivum der untenstehende Code den habe ich von dir, denn hattest du mal in dem Thread mit einbracht. Dieser funktioniert soweit. Danke Dir erstmal dafür. :smile: Kannst du mir trotzdem helfen?
Es funktioniert das jeweiligen ein-und ausklappen der CD‘s.

Wie funktioniert das komplette ein-und ausklappen, wenn man auf das jeweilige Album klickt. Das zum Schluss nur noch die Alben da stehen? Vielen Dank im Voraus. Liebe Grüße Enrico

Code:
<!DOCTYPE html>
<html="de">
<head>
<meta charset="utf-8">
<title>untitled</title>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
  /* $(document).ready(function() {  
                      
      $(".copen").click(function() {
  
         $(".c").show();
 
         var cid = $(this).data("c");
         $("#"+cid).toggle();   
  
      });
  
   });*/
     
     
        $(document).ready(function () {
            $(".copen").click(function () {
                var cid = $(this).data("c");
              //$('[data-cd-id]').hide ();
                $('[data-cd-id="' + cid + '"]').toggle ();
            });
        });
</script>
<style>
    tr [data-cd-id]{
        display: none;
    }
</style>
</head>
<body>
    
    <table border="1">
        <thead>
            <tr>
                <th>Lft Nr</th>
                <th colspan="3">Name der CD</th>
            </tr>
        </thead>    
            <tr>
                <th>01</th>
                <th colspan="3">100 Rock Hits - The Sound of my Life</th>
            </tr>
        <tbody>
            <tr>
                <td class="copen" data-c="c1">CD_01</td>
                <td>Interpret</td>
                <td>Titel</td>
                <td>Zeit</td>
            </tr>
            <tr data-cd-id="c1" class="c">
                <td>01.</td>
                <td>Golden Earring</td>
                <td>Radar Love</td>
                <td>05:05</td>
            </tr>
            <tr data-cd-id="c1">
                <td>02.</td>
                <td>Heart</td>
                <td>Barracuda</td>
                <td>04:24</td>
            </tr>
            <tr data-cd-id="c1">
                <td>03.</td>
                <td>Judas Priest</td>
                <td>Living After Midnight</td>
                <td>03:31</td>
            </tr>
                
            <tr data-cd-id="c1">
                <td>04.</td>
                <td>Alice Cooper</td>
                <td>No More Mr. Nice Guy</td>
                <td>03:07</td>
            </tr>
            <tr data-cd-id="c1">
                <td>05.</td>
                <td>Scorpions</td>
                <td>Rock You Like A Hurricane</td>
                <td>04:16</td>
            </tr>
            <tr data-cd-id="c1">
                <td>06.</td>
                <td>P!nk</td>
                <td>Trouble</td>
                <td>03:13</td>
            </tr>
            <tr data-cd-id="c1">
                <td>07.</td>
                <td>Motorhead</td>
                <td>Hellraiser</td>
                <td>04:34</td>
            </tr>
            <tr data-cd-id="c1">
                <td>08.</td>
                <td>Starship</td>
                <td>We Built This City</td>
                <td>04:37</td>
            </tr>
            <tr data-cd-id="c1">
                <td>09.</td>
                <td>Ram Jam</td>
                <td>Black Betty</td>
                <td>03:58</td>
            </tr>
            <tr data-cd-id="c1">
                <td>10.</td>
                <td>The Sweet</td>
                <td>Blockbuster</td>
                <td>03:12</td>
            </tr>
            <tr data-cd-id="c1">
                <td>11.</td>    
                <td>Blue Oyster Cult</td>    
                <td>(Don't Fear) The Reaper</td>
                <td>05:08</td>
            </tr>
            <tr data-cd-id="c1">    
                <td>12.</td>    
                <td>Uriah Heep</td>    
                <td>Easy Livin'</td>    
                <td>02:36</td>
            </tr>
            <tr data-cd-id="c1">
                <td>13.</td>    
                <td>Foreigner</td>
                <td>Urgent</td>    
                <td>03:58</td>
            </tr>
            <tr data-cd-id="c1">
                <td>14.</td>
                <td>Journey</td>
                <td>Wheel In The Sky</td>
                <td>04:12</td>
            </tr>
            <tr data-cd-id="c1">
                <td>15.</td>    
                <td>Kenny Loggins</td>    
                <td>Heartlight</td>    
                <td>03:55</td>
            </tr>
            <tr data-cd-id="c1">
                <td>16.</td>    
                <td>Patti Smith Group</td>    
                <td>Because The Night</td>    
                <td>03:23</td>
            </tr>
            <tr data-cd-id="c1">
                <td>17.</td>    
                <td>Firehouse</td>    
                <td>When I Look Into Your Eyes</td>    
                <td>04:02</td>
            </tr>
            <tr data-cd-id="c1">
                <td>18.</td>    
                <td>Blackmore's Night</td>    
                <td>Keeper Of The Flame</td>
                <td>04:38</td>
            </tr>    
            <tr data-cd-id="c1">    
                <td>19.</td>    
                <td>Emerson, Lake & Palmer</td>    
                <td>Lucky Man</td>    
                <td>04:38</td>
            </tr>
            <tr data-cd-id="c1">
                <td>20.</td>
                <td>Kansas</td>
                <td>Dust In The Wind</td>
                <td>03:25</td>
            </tr>
            <tr>
                <td class="copen" data-c="c2">CD_02</td>
                <td>Interpret</td>
                <td>Titel</td>
                <td>Zeit</td>
            </tr>
            <tr data-cd-id="c2" class="c">
                <td>01.</td>
                <td>Meat Loaf</td>
                <td>Bat Out Of Hell</td>
                <td>04:54</td>
            </tr>

            <tr>
                <td class="copen" data-c="c3">CD_03</td>
                <td>Interpret</td>
                <td>Titel</td>
                <td>Zeit</td>
            </tr>
            <tr data-cd-id="c3" class="c">
                <td>01.</td>
                <td>Boston</td>
                <td>More Than A Feeling</td>
                <td>04:45</td>
            </tr>
            <tr>
            <th>02</th>
            <th colspan="3">2raumwohnung - Lasso</th>
            </tr>
            <tr>
                <td class="copen" data-c="c4">CD_01</td>
                <td>Interpret</td>
                <td>Titel</td>
                <td>Zeit</td>
            </tr>
            <tr data-cd-id="c4" class="c">
                <td>01.</td>
                <td>2raumwohnung</td>
                <td>Der letzte Abend auf der Welt</td>
                <td>03:34</td>
            </tr>
            
            
            
            
        </tbody>
        
    </table>
</body>
</html>
 
Hallo @Oliver77 , vielen Dank für Deine Hilfe.

Nicht ganz, es sollte so sein:

Album mit CD1 und eventl. CD2 und eventl. CD3 sichtbar. Wenn man nun auf CD1 klickt, sie also "öffnen" möchte, erscheinen die Titel, klickt man auf CD2, erscheinen die Titel der CD1 und CD2 usw.

Klickt man nun wieder auf CD1 oder CD2, schließen sich CD1 bzw. CD2 wieder, d. h. die Anzeige der Titel wird wieder "zugeklappt".

Und zum Schluss, wenn man alles wieder schließen möchte, klickt man auf das jeweilige Album und alles klappt sich wieder ein.
 
Ich hänge hier einen Code von damals an, der teilweise auch funktioniert.
Nein, er funktioniert überhaupt nicht: da werden th-Elemente per Javascript klickbar gemacht - diese Elemente sind aber per Tastaturbedienung nicht erreichbar, damit ist das Konstrukt unbedienbar.
Ich hätte diesen Code aber am liebsten ohne Javascript, sondern nur in CSS. Wenn es einfacher ist, mit Javascript.
Evtl. lässt sich das ganze über (verschachtelte) details-Elemente lösen?
 
solange @Sempervivum auf sich warten lässt
Ich bin im Moment unterwegs und nur eingeschränkt aktiv.
Wenn ich das richtig verstehe ist die Tabelle dreistufig aufgebaut: Übersicht - Album - CD und die Alben und CDS sollen unabhängig auf- und zu geklappt werden, nicht wahr?
 
Zurück
Oben