ASPXでテーブルを作成しました。要件に基づいて列の1つを非表示にしたいのですがvisible
、HTMLテーブルの作成のような属性はありません。どうすれば問題を解決できますか?
ASPXでテーブルを作成しました。要件に基づいて列の1つを非表示にしたいのですがvisible
、HTMLテーブルの作成のような属性はありません。どうすれば問題を解決できますか?
回答:
このためには、スタイルシートを使用する必要があります。
<td style="display:none;">
td:first-child { display:none; }
nth-child
CSSセレクターを使用して、列全体を非表示にすることができます。
#myTable tr > *:nth-child(2) {
display: none;
}
これは、列Nのセル(a th
またはtd
)が常にその行のN番目の子要素であるという前提の下で機能します。
列番号を動的にしたい場合はquerySelectorAll
、次のように、または同様の機能を提供する任意のフレームワークを使用して行うことができjQuery
ます。
$('#myTable tr > *:nth-child(2)').hide();
(jQueryソリューションは、をサポートしていないレガシーブラウザでnth-child
も動作します)。
あなたも使うことができます:
<td style="visibility:hidden;">
or
<td style="visibility:collapse;">
それらの「非表示」の違いはセルを非表示にしますが、スペースは保持しますが、「折りたたみ」ではスペースはdisplay:noneのようには保持されません。これは、列全体または行全体を非表示にする場合に重要です。
visibility: collapse
これはとセルの幅/高さを再計算するときに違いがあるため、セルの表示/非表示を処理するために特別に設計されていdisplay:none
ます。developer.mozilla.org/en-US/docs/Web/CSS/visibility#Values
コスの答えはほぼ正しいですが、有害な副作用を引き起こす可能性があります。これはより正しいです:
#myTable tr td:nth-child(1), #myTable th:nth-child(1) {
display: none;
}
CSS(カスケードスタイルシート)は、そのすべての子に属性をカスケードします。これは、*:nth-child(1)
最初に非表示になりtd
、それぞれのをtr
ANDすべての最初の要素隠すtd
子供たちを。あなたのいずれかにtd
ボタン、アイコン、入力、または選択などがある場合、最初のものは非表示になります(うーん!)。
あなたがいない場合でも、現在表示されなくなります事、映像道をあなたの不満を持っているあなたは1を追加する必要がある場合。そのようなあなたの将来の自己を罰しないでください、それはデバッグするのが苦痛になるでしょう!
私の答えは初回のみ非表示になりますtd
とth
、すべての上tr
で#myTable
安全にあなたの他の要素を維持します。
ブートストラップの人々は、.hidden
クラスを使用してい<td>
ます。
col要素を使用して列を非表示にすることもできますhttps://developer.mozilla.org/en/docs/Web/HTML/Element/col
テーブルの2番目の列を非表示にするには:
<table>
<col />
<col style="visibility:collapse"/>
<tr><td>visible</td><td>hidden</td></tr>
<tr><td>visible</td><td>hidden</td></tr>
既知の問題:これはGoogle Chromeでは機能しません。https://bugs.chromium.org/p/chromium/issues/detail?id=174167でバグに投票してください
<style>
.hideFullColumn tr > .hidecol
{
display:none;
}
</style>
テーブルで.hideFullColumnを使用し、thで.hidecolを使用します。tdにクラスを個別に追加する必要はありません。インデックスが各tdを考慮していない可能性があるため、問題が発生するためです。
<!doctype html>
<html lang="en">
<head>
<style id="myStyleSheet">
...
</style>
var column = 3;
var styleSheet = document.getElementById("myStyleSheet").sheet;
var rule = "table tr td:nth-child("+ column +"),table th:nth-child("+ column +")
{display: none}";
styleSheet.insertRule(rule);