• 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?
 
Du, @Earlenrico , hattest geschrieben, dass dir eine Lösung ohne JS lieber sei. Man könnte daran denken, das Aufklappen mit summary-details zu machen. Allerdings hatte ich, glaube ich, mal Probleme, wenn man es in einer Tabelle verwendet. Müsste man ausprobieren.
 
Hallo @Oliver77 vielen Dank für deine Hilfe. Dein Vorschlag funktioniert bis auf eine Sache: Wenn ich das Album lfd. Nr. 01 einklappen möchte und ich auf 01. klicke, sollten CD01 und CD02 zuklappen, sprich verschwinden.

@Sempervivum: Es wäre eine Idee, es mit summary-details zu versuchen. Ich werde es mal ausprobieren. Ich melde mich bei euch, ob es funktioniert.
 
Ich habe jetzt mit summary-details probiert.
Code:
<html>
<head>
<meta charset="utf-8">
<title>musik</title>
</head>


<style>

summary{

background-color: #ddd;

}




</style>

<body>
<table border="1">
    <thead>
                    
            <tr>
            <th>Lfd. Nr.</th>
            <th>Name der CD</th>
            </tr>       
            <tr>           
            <th>01.</th>
            <th>100 Rock Hits - The Sound of my Life</th>
            </tr>
    </thead>
</table>               

        <details>

        <summary>CD_01
                        Interpret
                        Titel
                        Zeit    </summary>
                
                
                    
                    01.   
                    Golden Earring   
                    Radar Love   
                    05:05
                    
                    02.
                    Heart
                    Barracuda
                    04:24
                    
                    03.
                    Judas Priest
                    Living After Midnight
                    03:31
                    
                    
                    04.
                    Alice Cooper
                    No More Mr. Nice Guy
                    03:07
        </details>   
</body>
</html>

Aber sobald eine Tabelle mit ins Spiel kommt funkioniert summary-details nicht mehr.
 
Wenn ich das richtig gelesen habe, wird HTML5 summary-details in Tabellen nicht unterstützt.

Bitte nicht gleich „steinigen“, wenn ich es falsch verstanden habe.
 
Zurück
Oben