HTMLテーブルの列を非表示にする方法は?


93

ASPXでテーブルを作成しました。要件に基づいて列の1つを非表示にしたいのですがvisible、HTMLテーブルの作成のような属性はありません。どうすれば問題を解決できますか?

回答:


171

このためには、スタイルシートを使用する必要があります。

<td style="display:none;">

1
htmlのcssを使用した最初の列のみについてはどうでしょう
オフィス302

javascript createelement(td);を使用してテーブルを作成するときに、それにスタイルを追加するにはどうすればよいですか。
オフィス302

1
@ office302このスタイルを最初のtdにのみ適用しますか?または、CSSのみを使用したい場合-これは次のように実行できますtd:first-child { display:none; }
Anuraj

@Anuraj注意::first-childなどがサポートされています> IE 11とEdge、いずれにしても良い
Vitaliy Terziev 2017

88

nth-childCSSセレクターを使用して、列全体を非表示にすることができます。

#myTable tr > *:nth-child(2) {
    display: none;
}

これは、列Nのセル(a thまたはtd)が常にその行のN番目の子要素であるという前提の下で機能します。

こちらがデモです。


列番号を動的にしたい場合はquerySelectorAll、次のように、または同様の機能を提供する任意のフレームワークを使用して行うことができjQueryます。

$('#myTable tr > *:nth-child(2)').hide();

jQueryを使用したデモ

(jQueryソリューションは、をサポートしていないレガシーブラウザでnth-childも動作します)。


1
これは有害な副作用をもたらす可能性があります。改善された解決策については、以下の私の回答を参照しください。
リックスミス

@RickSmith良い点。別の方法で問題を回避するために私の投稿を更新しました(子セレクターを使用)。
Kos

子セレクターは間違いなく優れています。いい答えだ。
リック・スミス

素晴らしい解決策ですが、colspanのケースについてもう少し検討する必要があります。
Cinoss

30

あなたも使うことができます:

<td style="visibility:hidden;">
or
<td style="visibility:collapse;">

それらの「非表示」の違いはセルを非表示にしますが、スペースは保持しますが、「折りたたみ」ではスペースはdisplay:noneのようには保持されません。これは、列全体または行全体を非表示にする場合に重要です。


1
divタグの折りたたみもスペースを保持することがわかりました。divタグの場合、display:none;を使用する必要があります。本当に崩壊し、空間を保持しないために。
Dov Miller

5
visibility: collapseこれはとセルの幅/高さを再計算するときに違いがあるため、セルの表示/非表示を処理するために特別に設計されていdisplay:noneます。developer.mozilla.org/en-US/docs/Web/CSS/visibility#Values
SteveB

28

コスの答えはほぼ正しいですが、有害な副作用を引き起こす可能性があります。これはより正しいです:

#myTable tr td:nth-child(1), #myTable th:nth-child(1) {
    display: none;
}

CSS(カスケードスタイルシート)は、そのすべての子に属性をカスケードします。これは、*:nth-child(1)最初に非表示になりtd、それぞれのをtr ANDすべての最初の要素隠すtd子供たちを。あなたのいずれかにtdボタン、アイコン、入力、または選択などがある場合、最初のものは非表示になります(うーん!)。

あなたがいない場合でも、現在表示されなくなります事、映像道をあなたの不満を持っているあなたは1を追加する必要がある場合。そのようなあなたの将来の自己を罰しないでください、それはデバッグするのが苦痛になるでしょう!

私の答えは初回のみ非表示になりますtdth、すべての上tr#myTable安全にあなたの他の要素を維持します。


10

ブートストラップの人々は、.hiddenクラスを使用してい<td>ます。


6

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でバグに投票してください


2

<style>
.hideFullColumn tr > .hidecol
{
    display:none;
}
</style>

テーブルで.hideFullColumnを使用し、thで.hidecolを使用します。tdにクラスを個別に追加する必要はありません。インデックスが各tdを考慮していない可能性があるため、問題が発生するためです。


1

また、列を反復処理して特定のインデックスでtd要素を設定し、そのスタイルを持つようにJavascriptでスタイルを割り当てることにより、vs devがプログラムで提案することを実行できます。


0
<!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);

2
問題が解決することを願っていますが、コードの説明を追加して、ユーザーが本当に望んでいることをユーザーが完全に理解できるようにしてください。
ジャイミルパテル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.