Zeilen in verschachtelten Tabellen ein/ausblenden

Foreador

Grünschnabel
Hallo zusammen,

ich habe folgendes Problem:

In einer Tabelle (Produktgruppen) sollen Zeilen ein- und ausblendbar sein (in meinem Beispiel die Produkte).
Soweit kein Problem.

Auch mehrere Zeilen sollen gleichzeitig ein- und ausgeblendet werden.
Funktioniert auch.

Nun habe ich in den eingeblendeten Zeilen nochmals Unterkategorien, die ich ebenfalls ein- und ausblenden will. Solange ich nur eine zusätzliche Zeile einblenden will, bekomme ich das hin, aber bei mehreren zerbrech ich mir den Kopf.

Das Ein- und Ausblenden an sich funktioniert, jedoch werden die Tabellenzeilen, die unterhalb der einzublendenden Zeile stehen nicht mehr von der Formatierung und Funktion berücksichtigt.


Im Beispiel sollen bei Klick auf "Produkt 4" die Unterprodukte eingeblendet werden (funktioniert) und gleichzeitig sollen "Produkt 5" und "Produkt 6" genau wie "Produkt 4" erst nach Klick auf "Produktgruppe 2" erscheinen.

:D Das Ganze klingt so relativ unverständlich, wenn man sich das Beispiel anschaut, weiss man aber gleich, was gemeint ist :D

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
          "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>Produkte</title>

<script type="text/javascript" language="javascript">
// <![CDATA[

function setVisibility(rowName) {
	// Tabellenzelle ermitteln
	
	var actualVisibility=document.getElementById(rowName).style.visibility;

	if(actualVisibility=='' || actualVisibility=='visible') {
		document.getElementById(rowName).style.visibility = "hidden";
		document.getElementById(rowName).style.display = "none";
	} else {
		document.getElementById(rowName).style.visibility = "visible";
		document.getElementById(rowName).style.display = "block";
	}
}
// ]]>
</script>


<style type="text/css">
#t1 { background-color:#808080; line-height:20px; font-size:12px; border-color:#FFFFFF; border-style:solid; border-width:1px 0px 1px; }
#pgr1 { padding-left: 5px; padding-right: 5px; background-color:#ADADAD; line-height:20px; font-size:12px }
#pgr2 { padding-left: 5px; padding-right: 5px; background-color:#ADADAD; line-height:20px; font-size:12px }
#ugr1 { padding-left: 5px; padding-right: 5px; background-color:#DEDEDE; line-height:20px; font-size:12px }


</style>


</head>

<body bgcolor="#C0C0C0" link="#000000" alink="#000000" vlink="#000000" style="font-family:calibri">



<table border="0" rules="rows" cellspacing="0" width="100%" style="margin-top:10px">
  <tr id="t1" style="text-indent:10px;">
    <td><a href="#" onclick="setVisibility('pgr1')" style="text-decoration:none;background-color:#808080">Produktgruppe 1</a></td>
  </tr>

<tbody id="pgr1" name="pgr1" style="visibility:hidden;display:none;text-indent:25px">

  <tr>
  <td>Produkt 1</td>
  </tr>
  <tr>
  <td>Produkt 2</td>
  </tr>
  <tr>
  <td>Produkt 3</td>
  </tr>

</tbody>
  
  <tr id="t1" style="text-indent:10px;">
    <td><a href="#" onclick="setVisibility('pgr2')" style="text-decoration:none;background-color:#808080">Produktgruppe 2</a></td>
  </tr>

<tbody id="pgr2" name="pgr2" style="visibility:hidden;display:none;text-indent:25px">
  <tr>
  <td><a href="#" onclick="setVisibility('ugr1')" style="text-decoration:none">Produkt 4</a></td>
  </tr>
<tbody id="ugr1" name="ugr1" style="visibility:hidden;display:none;text-indent:40px">
  <tr>
  <td>Unterprodukt 1</td>
  </tr>
  <tr>
  <td>Unterprodukt 2</td>
  </tr>
</tbody>
  <tr>
  <td>Produkt 5</td>
  </tr>
  <tr>
  <td>Produkt 6</td>
  </tr>
</tbody>  

</table>



</body>
</html>

Ich denke, das Ganze ist ein relativ simples Definitionsproblem, aber ich komme einfach nicht dahinter.

Ich zähl auf euch :D

Vielen Dank schonmal für die Hilfe!

Ach ja, was als Bonus noch super wäre:
Wenn bei eingeblendeter "Produktgruppe 2" und gleichzeitig eingeblendeten "Unterprodukten" bei einem erneuten Klick auf "Produktgruppe 2" nicht nur "Produkt 4" sondern auch die "Unterprodukte" wieder ausgeblendet werden.

Vielleicht kann mir das auch jemand erklären :D

Vielen Dank nochmal fürs mittüfteln!

Gruß
Foreador
 
Habe die Lösung gefunden!

Jede Hauptkategorie wird als eigene Tabelle deklariert und die Unterkategorien ebenfalls als Tabelle <table> und nicht als <tbody> ein- und ausgeblendet. Erst eine Ebene weiter unten wird <tbody> verwendet.

Das löst beide Probleme auf einmal!
 

Neue Beiträge

Zurück