tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
428
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Mar 2004
    Ort
    Tiefste Provinz
    Beiträge
    304
    Guten Abend,
    ich würde gerne per JS einen ganzen Block von Tabellenzeilen auf einen Schlag ein- oder ausblenden. Ein Beispiel-Skript sag mehr als 1000 Worte:
    HTML-Code:
    <script language="JavaScript" type="text/javascript">
    	function showHide(id) {
    		var dasDiv = document.getElementById(id);
    		if (dasDiv.style.display == 'block') {
    			dasDiv.style.display = 'none';
    		} else {
    			dasDiv.style.display = 'block';
    		}
    	}
    </script>
    
    <a href="javascript:void showHide('xy');">
    	Ein-/Ausblenden
    </a>
    
    <table>
    	<tr>
    		<td>Hallo</td>
    		<td>Welt</td>
    	</tr>
    	
    	<div id="xy" style="display:block"> <!-- die Zeilen von hier -->
    	
    	<tr>
    		<td>Hello</td>
    		<td>World</td>
    	</tr>
    	<tr>
    		<td>Hola</td>
    		<td>Mundo</td>
    	</tr>
    	<tr>
    		<td>Bonjour</td>
    		<td>Monde</td>
    	</tr>
    	
    	</div> <!-- bis hier sollen ausblendbar sein -->
    
    	<tr>
    		<td>Ciao</td>
    		<td>Mondo</td>
    	</tr>
    </table>
    So funktioniert das aber offensichtlich nicht. Ich möchte allerdings vermeiden, allen <tr>s Namen geben zu müssen um sie dann in einer Schleife auszublenden Das obige Skript ist nur ein stark vereinfachtes Beispiel, das echte ist viel komplexer und in eine PHP-MySQL-Template-Engine-Umgebung eingebettet und es gibt natürlich auch mehrere Blöcke die ein-/ausgeblendet werden sollen.

    Jemand 'ne Idee?
     
    Martin

  2. #2
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Das liegt daran, dass die Tabelle das <div> nicht als Elternstruktur anerkennt.

    So funktioniert es:

    HTML-Code:
    <script language="JavaScript" type="text/javascript">
    	function showHide(id) {
    		var dasDiv = document.getElementById(id);
    		if (dasDiv.style.display == 'block') {
    			dasDiv.style.display = 'none';
    		} else {
    			dasDiv.style.display = 'block';
    		}
    	}
    </script>
    
    <a href="javascript: showHide('xy');">
    	Ein-/Ausblenden
    </a>
    
    <table>
    	<tr>
    		<td>Hallo</td>
    		<td>Welt</td>
    	</tr>
    </table>
    	<div id="xy" style="display:block"> <!-- die Zeilen von hier -->
    	<table>
    	<tr>
    		<td>Hello</td>
    		<td>World</td>
    	</tr>
    	<tr>
    		<td>Hola</td>
    		<td>Mundo</td>
    	</tr>
    	<tr>
    		<td>Bonjour</td>
    		<td>Monde</td>
    	</tr>
    	</table>
    	</div> <!-- bis hier sollen ausblendbar sein -->
    <table>
    	<tr>
    		<td>Ciao</td>
    		<td>Mondo</td>
    	</tr>
    </table>
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  3. #3
    Registriert seit
    Mar 2004
    Ort
    Tiefste Provinz
    Beiträge
    304
    Ja, danke erstmal, das leuchtet ein.
    Allerdings krieg ich dann Ärger mit den ganzen Styles, die Tabelle hat in echt Ränder und Spacing und Padding und das alles. Klar kann man das trotzdem hinkriegen, etwa mir Sonderbehandlung der Bottom/Top-Styles, das wird aber in der eh schon komplexen Struktur eine riesen Pfriemelei.

    Gibt es noch Hoffnung auf eine simple Lösung?
     
    Martin

  4. #4
    Registriert seit
    Mar 2004
    Ort
    Tiefste Provinz
    Beiträge
    304
    Ha! Ich hab's.
    Beim Stichwort "Elternstruktur" ist ein Groschen gefallen - da war doch noch was zwischen <table> und <tr>, das nie irgend jemand braucht: <tbody>. So funktioniert's:
    HTML-Code:
    <script language="JavaScript" type="text/javascript">
    	function showHide(id) {
    		var tb = document.getElementById(id);
    		if (tb.style.display == 'none') {
    			tb.style.display = 'block';
    		} else {
    			tb.style.display = 'none';
    		}
    	}
    </script>
    
    <a href="javascript:void showHide('x');">X an/aus</a>
    <br>
    <a href="javascript:void showHide('y');">Y an/aus</a>
    
    <table>
    	
    	<tr>
    		<td>Hallo</td>
    		<td>Welt</td>
    	</tr>
    	
    	<tbody id="x">
    		<tr>
    			<td>Tschüss</td>
    			<td>Welt</td>
    		</tr>
    		<tr>
    			<td>Adios</td>
    			<td>Mundo</td>
    		</tr>
    		<tr>
    			<td>Au revoir</td>
    			<td>Monde</td>
    		</tr>
    	</tbody>
    
    	<tr>
    		<td>Hello</td>
    		<td>World</td>
    	</tr>
    
    	<tbody id="y">
    		<tr>
    			<td>Hello</td>
    			<td>Moon</td>
    		</tr>
    		<tr>
    			<td>Hola</td>
    			<td>Luna</td>
    		</tr>
    		<tr>
    			<td>Bonjour</td>
    			<td>Lune</td>
    		</tr>
    	</tbody>
    
    	<tr>
    		<td>Ciao</td>
    		<td>Mondo</td>
    	</tr>
    
    </table>
    Besten Dank an den Stichwortgeber!
     
    Martin

  5. #5
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    eine andere Möglichkeit wäre, Zeilen über ihren Index (beginnend bei Null) aus-/einzublenden.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    
    <html>
    <head>
    <title>www.tutorials.de</title>
    <meta name="author" content="Quaese">
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <script type="text/javascript">
      <!--
    function showHide(strID, intStart, intEnde){
      var arrRows = document.getElementById(strID).rows;
     
      for(var i=intStart; i<=intEnde; i++){
        if(arrRows[i].style.display == "none"){
          arrRows[i].style.display = "";
        }else{
          arrRows[i].style.display = "none";
        }
      }
    }
     //-->
    </script>
    </head>
    <body>
    <a href="javascript:void showHide('tableID', 1, 3);">
        Ein-/Ausblenden
    </a>
     
    <table id="tableID">
      <tr>
        <td>Hallo</td>
        <td>Welt</td>
      </tr>
     
      <tr>
        <td>Hello</td>
        <td>World</td>
      </tr>
      <tr>
        <td>Hola</td>
        <td>Mundo</td>
      </tr>
      <tr>
        <td>Bonjour</td>
        <td>Monde</td>
      </tr>
     
      <tr>
        <td>Ciao</td>
        <td>Mondo</td>
      </tr>
    </table>
    </body>
    </html>
    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

Ähnliche Themen

  1. TListView Zeilen ausblenden
    Von delphi beginner im Forum Delphi, Kylix, Pascal
    Antworten: 1
    Letzter Beitrag: 26.01.10, 12:07
  2. Tabellen Zeilen ein und ausblenden
    Von lernen.2007 im Forum Javascript & Ajax
    Antworten: 22
    Letzter Beitrag: 13.05.08, 00:18
  3. Zeilen ausblenden
    Von al-Maghribi im Forum PHP
    Antworten: 3
    Letzter Beitrag: 09.04.08, 12:03
  4. Zeilen in JTable ausblenden
    Von Leyja im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 5
    Letzter Beitrag: 06.03.08, 23:52
  5. [C++ MFC] Zeilen in CListCtrl ausblenden
    Von sisela im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 05.01.05, 13:49