Tabellen sollten nicht auf display: block
. Tabellenzeilen und Zellen sollten das auch nicht. Sie haben unterschiedliche Anzeigewerte. Mein Rat? Machen Sie es nicht auf diese Weise. Verwenden Sie eine Klasse:
.hidden {
display: none;
}
und fügen Sie es dynamisch hinzu und entfernen Sie es aus der Tabelle, um Probleme bei der Einstellung des richtigen Anzeigetyps für ein Element zu vermeiden, das Sie anzeigen.
Editar: Um die Frage zu klären, warum man das so macht und was da los ist. Versuchen Sie dies:
<table>
<tr>
<td>Cell 1</td>
<td style="display: block;">Cell 2</td>
</tr>
</table
Es wird (oder sollte) Ihr Tabellenlayout durcheinander bringen. Warum, weil eine <td>
Element hat standardmäßig display: table-cell
no block
. Die Tische sind gleich. Sie haben display: table
.
Das Zurücksetzen von CSS-Attributen ist... problematisch.
Daher ist es am besten, Klassen zum Setzen und Aufheben von Attributen zu verwenden. Es ist einfacher zu ändern (die Klasse befindet sich in einer CSS-Datei und ist kein Code), vermeidet Probleme wie das Zurücksetzen des Wertes auf den korrekten ursprünglichen Wert und bietet im Allgemeinen eine sauberere Lösung, insbesondere bei Verwendung einer Bibliothek wie jQuery. In jQuery können Sie das tun:
$("table").toggleClass("hidden");
Erledigt.
Oder Sie können verwenden addClass()
y removeClass()
wenn das angemessener ist. Zum Beispiel:
<input type="button" id="hide" value="Hide Table">
...
<table id="mytable">
...
und
$(function() {
$("#hide").click(function() {
if ($("#mytable").is(".hidden")) {
$("#hide").val("Hide Table");
$("#mytable").removeClass("hidden");
} else {
$("#hide").val("Show Table");
$("#mytable").addClass("hidden");
}
});
});
Und schon haben Sie eine robuste, prägnante und leicht verständliche Lösung (sobald Sie sich mit der jQuery-Syntax vertraut gemacht haben, was nicht allzu lange dauert).
Direkt mit Javascript herumzuspielen ist so 2002 :-)
0 Stimmen
Gibt es DOCTYPE auf dieser Seite? Wenn nicht, warum xhtml-Namespace?
0 Stimmen
Table-layout: fixed ist eine Sache des IE, nicht des Standards
0 Stimmen
@RoBorg - ich bin sehr zufrieden mit den Nicht-Standard-Implementierungen des IE; ich benutze allerdings immer noch Mozilla :) @Anthony ... guter Punkt