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

Tabellenzeile ausblenden mit display?

csigg

Neues Mitglied
Hallo,

ich habe eine Tabelle, in welcher ich suchergebnisse anzeigen lasse. Wenn man dann auf den Button "mehr" klickt, sollten darunter Details über das ganze angezeigt werden. Diese habe ich im Moment einfach als weitere zeile gemacht, welche ich ausblende über Display:none; Wenn ich dass ganze einblende über Display:inline, kann ich allerdings nicht mit Colspan mehrere Zeilen verbinden.
Hier mal der Code dazu:
PHP:
<script language="javascript">
<!--
  function Klick(val)
  {   
    if( document.getElementById('zeile'+val).style.display == 'inline' )
    {
         document.getElementById('zeile'+val).style.display = 'none'; 
    }    
    else
    {
         document.getElementById('zeile'+val).style.display = 'inline';     
    }
  }

  function Schliessen(val)
  {
    document.getElementById('zeile'+val).style.display = 'none';
  }    
</script> 

...
     
    echo '<table border="1" width="450" cellspacing="0" cellpadding="2">'; 
    echo     '<tr bgcolor="#999999">'; 
    echo         '<td width="120">Hersteller</td>'; 
    echo         '<td width="220">Servo</td>'; 
    echo         '<td width="55">Preis inkl. Mwst. zzgl. Versand</td>';
    echo        '<td width="5">&nbsp;</td>'; 
    echo         '<td width="50">weitere Infos</td>'; 
    echo     '</tr>'; 
    
    $i = 0;
 
    while($row = mysql_fetch_object($ergebnis))  
    { 
        $id = $row->id; 
        $erg_hersteller = $row->manufacturers_name; 
        $erg_text = $row->products_name; 
        $erg_preis = $row->products_price; 
        $erg_tax = $row->tax_rate; 
        $preis_brutto = round($erg_preis*(1+$erg_tax/100),2); 
    
    $mehr = "<table width='450'>
                <tr>
                    <td>Typ: </td><td>".$row->typ."</td>
                    <td>Länge: </td><td>".$row->laenge."</td>
                </tr>
                <tr>
                    <td>Getriebe: </td><td>".$row->getriebe."</td>
                    <td>Breite: </td><td>".$row->breite."</td>                
                </tr>
                <tr>
                    <td>Lager: </td><td>".$row->lager."</td>
                    <td>Höhe: </td><td>".$row->hoehe."</td>                
                </tr>
                <tr>
                    <td colspan='4'>".$link."</td>
                </tr>
                <tr>
                    <td colspan='4'><a href='#' onclick='Schliessen(".$i.")'>Details schließen</a></td>
                </tr>
            </table>
            ";
        
        $preis_brutto = number_format($preis_brutto,2);
        $preis_brutto = $preis_brutto.' &euro;';
 
        if (($i % 2) == 0)
            echo     '<tr bgcolor="#FFFFFF">';        
        else
            echo     '<tr bgcolor="#EEEEEE">';
                

            echo         '<td>'.$erg_hersteller.'</td>'; 
            echo         '<td>'.$erg_text.'</td>'; 
            echo         '<td align="right">'.$preis_brutto.'</td>';
            echo         '<td>&nbsp;</td>'; 
            echo         '<td><a href="#" onclick="Klick('.$i.')">mehr</a></td>'; 
            echo     '</tr>';
            echo    '<tr style="display:none;" id="zeile'.$i.'">';
            echo         '<td colspan="5" id="mehr">';            
            echo             $mehr;
            echo        '</td>';
            echo     '</tr>';        
        $i++;     
            
} 
    echo '</table>'; 
     
?> 
</body> 
</html>
Bildschirmfoto-Produktfinder%20-%20Mozilla%20Firefox.png


Laut Code müsste ja mit dem Colspan der "Detailbereich" über die komplette zeile gehen. Ich denke dass es mit dem display:inline zu tun hat, aber wie kann man dass denn anders lösen?
 
super, danke!
jetzt wird es richtig angezeigt!

hab das ganze schon ausprobiert, allerdings mit nem <p> Tag, da hats nicht funktioniert, aber manchmal kommt man wohl auf die einfachsten dinge ;-)
 
Beachte, dass der IE bis Version 7 den Wert "table-row" nicht kennt. Für den musst du "display: block" setzen.
 
Zurück
Oben