プロが教えるわが家の防犯対策術!

<table border="0" id="tbl1">
<tr>
<th>A1</td>
<th>B1</td>
<th colspan="2">C1</td>
</tr>
<tr>
<td>aaa</td>
<td>bbb</td>
<td>ccc</td>
<td>ddd</td>
</tr>
<tr>
<td>aaa</td>
<td>bbb</td>
<td>ccc</td>
<td>ddd</td>
</tr>
</table>
というテーブルで、C1列(要はデータcccとdddの2列)を表示/非表示を行いたいです。
調べてみたところ、colspanが設定されている例がありませんでした。

お判りになる方、よろしくお願いします。

A 回答 (11件中1~10件)

colspanがあろうがなかろうが


やることは同じよ。

消したい場合は対象のセルを全て、
表示したい場合も対象のセルを全て
style.displayを書き換えるだけ。
    • good
    • 0

document.getElementById('tbl1').childNodes


を取得して、childNodesを辿っていって3番目&4番目のtd要素ノードにstyle="display:none;"を与える。

という形になると思います。

TAG indexによく似た質問がありました。参考になるかもしれません。

掲示板/JavaScript質問板/javascript 列を非表示にしたい - TAG index Webサイト
http://www.tagindex.com/cgi-lib/q4bbs/patio.cgi? …
    • good
    • 0

ひょうのせるには、.colSpanってのがあるじょ!


それをかうんとしてはんだんしてる。
style.display は、tabel-cell と inline とがあるじょ
めんどうなので rowSpan は、する~しちゃった
ばぶぅ。

//@cc_on @set @v = @_jscript_version;
function test(tableID, sRow, eRow, vFlag) {
 var t = document.getElementById(tableID);
 var rMax = t.rows.length;
 var cMax;
 var tr;
 var cIdx;
 var obj;
 var disp = /*@if(@v>=8) 'inline' @else@*/ 'table-cell' /*@end@*/;
 
 for (var i = 0; i < rMax; i++) {
  tr = t.rows[i];
  cMax = tr.cells.length;
  cIdx = 0;
  for (var j = 0; j < cMax; j++) {
   obj = tr.cells[j];
   if (sRow <= cIdx && cIdx <= eRow) {
    obj.style.display = vFlag ? disp: 'none';
   }
   cIdx += obj.colSpan;
  }
 }
}
alert('消す');
test('tbl1', 2,3);
alert('見せる');
test('tbl1', 2,3,true);

この回答への補足

申し訳ありません。皆様を混乱させてしまって・・・

やりたい事は、AAAの列だけ常に表示させておき、BBB(つまり3列分)を表示/非表示になる・・といった事です。
下のHTMLで、変数bbbには「3」が入っているのは確認できましたが、後がさっぱり続きません。

どうぞよろしくお願いいたします。



<html>
<head>
<script type="text/javascript">
<!--
function hide(idName) {
var aaa = document.getElementById(idName).childNodes;
var bbb = aaa[0].length;
alert(bbb);
//-->
</script>
</head>

<body>
<button onClick="hide('list1')">隠す</button>
<table border="1" cellpadding="2" cellspacing="1">
<tr>
<th rowspan="3">AAA</th>
<th colspan="3" id="list1">BBB</th>
</tr>
<tr>
<th width="120">BBB1</th>
<th width="120">BBB2</th>
<th width="120">BBB3</th>
</tr>
<tr>
<th>BBB11</th>
<th>BBB21</th>
<th>BBB31</th>
</tr>
<tr>
<td>aaa</td>
<td>aaa1</td>
<td>aaa2</td>
<td>aaa3</td>
</tr>
<tr>
<td>bbb</td>
<td>bbb1</td>
<td>bbb2</td>
<td>bbb3</td>
</tr>
<tr>
<td>ccc</td>
<td>ccc1</td>
<td>ccc2</td>
<td>ccc3</td>
</tr>
</table>
</body>
</html>

補足日時:2009/05/21 11:49
    • good
    • 0

ていせいします


(@v<8)
でした。
    • good
    • 0

れんとう、ごめん。


colSpan には、0のときもあるらしいので、そのときは・・・
やっぱり while がみじかいじょ

function test(tableID, sRow, eRow, vFlag) {
 var t = document.getElementById(tableID);
 var tr;
 var cIdx;
 var obj;
 var disp = /*@if(@v<8) 'inline' @else@*/ 'table-cell' /*@end@*/;
 var i = 0, j;
 
 while (tr = t.rows[i++]) {
  cIdx = j = 0;
  while (obj = tr.cells[j++]) {
   sRow <= cIdx && cIdx <= eRow && (obj.style.display = vFlag ? disp: 'none');
   cIdx += obj.colSpan;
  }
 }
}
    • good
    • 0

babu_babooさんの方法が一番スマートですね。



tableの場合、childNodesを使わなくても rows, cells という便利なプロパティがあるようです。

Document Object Model/TABLE
http://homepage3.nifty.com/aya_js/dom/dom03.htm

# あとは、Firebugでいろいろコードをたたけば解決できるんじゃないでしょうか。
    • good
    • 0

ぶちっ。



れいせいに×2>じぶん

ikeike77さんへ
ようぼうというか、仕様はほかにないのかなぁ~。ばぶぅ~

ゆめはおおきくかたっておいたほうがよいぞ!ばぶぅ。

この回答への補足

ごめんなさいm(__)m
回答No.3に補足説明したのですが、rowspan、colspan混在したテーブルで、
childNodesとかの知識もおぼろげで。。。
要はテーブル中の特定のIDを付けた列だけを非表示にしたいのです。

補足日時:2009/05/21 13:57
    • good
    • 0

おおきいゆめをかたられたら、どうしよう?とおもったけど。

ばぶ。

function hide() {
 var c = 0, o, e;
 while (o = arguments[c++]) (e = document.getElementById(o)) && (e.style.visibility = 'hidden');
}
    • good
    • 0

しつもん。


「れつをけす」がただしいの?
「とくていのせるをかくす」がただしいの?
「ひょうのどこであれ、していしたIDのあるれつすべてをけす」?

にほんごむずかしいからさぁ。ばぶ。

この回答への補足

すみません。スレを変えて画像で表示します。

補足日時:2009/05/21 15:09
    • good
    • 0

test('てーぶるのID',1,3);


ではだめってことでしょ?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!