【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?

insertRow()でROW(空行)を4行ほど作成し、観覧者のトリガーでinsertCell()でセルを6個くらい作成しています。
さらにトリガーにより、セルを6個とも削除したい場合はですがどのようにすれば良いのでしょうか。。
ただし、ROWは残したままです。

頑張って勉強した挙句、insertRow()で空行を作成したときと同じ状況に戻したいので、deleteCell()を6回記述して削除するようにしてみました。

ですがこの場合、セルが存在しない場合deleteCell()だとエラーが出てしまいますので、
セルが存在するかどうかチェックしたいのです。

□□□□□□
○○○○○○←この列を消したい!でも、すでに存在しないかも。。。
☆☆☆☆☆☆
△△△△△△

var newCalcTR = new Array();
newCalcTR[0] = document.all.mycalc.insertRow(2);
newCalcTR[1] = document.all.mycalc.insertRow(3);
newCalcTR[2] = document.all.mycalc.insertRow(4);
newCalcTR[3] = document.all.mycalc.insertRow(5);
newCalcTR[4] = document.all.mycalc.insertRow(6);
newCalcTR[5] = document.all.mycalc.insertRow(7);

という風に、newCalcTR[?]とテーブルの行番号をリスト化したいので、ROWを消すわけにはいきません。
どうかご教授下さい。

A 回答 (2件)

消したい列のtr要素(element)に対して



element.getElementsByTagName('td').length

でセルの個数が得られませんか?
    • good
    • 0
この回答へのお礼

早々のご返答ありがとうございます。
newCalcTR[i].getElementsByTagName('td').length
の方法で取得できました!

newTD = newCalcTR[i].insertCell(0);
でセルを作成しているので、getElementsByTagName('td')でタグネームを指定しても無駄だと思いこんでいました。。

本当に助かりました!
ありがとうございました!

お礼日時:2009/05/22 08:21

これならどうかな?



<table border="1">
<tr id="tr0">
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>簡単じゃん</td>
<td>5</td>
</tr>
</table>

<script type="text/javascript">
<!--
var TR = document.getElementById('tr0');
alert('セルの数は、' + TR.cells.length);
alert('テーブルの行数は、' + TR.parentNode.rows.length);
alert('1行目の5列目のテキストは、' + TR.cells[4].firstChild.nodeValue);
//TRの子(TD)は、6個あるが、ブラウザによって、テキストノードがあったりする
//なので6個とは限らない。
while (TR.hasChildNodes()) { TR.removeChild(TR.firstChild); }

//-->
</script>
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
頂いたサンプルですが、insertRow()でTRを作成しているので、idの振る処理を追加しなければなりませんよね(汗)
#1の方の回答でスマートに解決できました。

>TRの子(TD)は、6個あるが、ブラウザによって、テキストノードがあったりする
>なので6個とは限らない。

そうなのですか?
また今後私が引っかかりそうな感じがします(汗)ので、素晴らしい情報をありがとうございます。

またよろしくお願いします!

お礼日時:2009/05/22 08:32

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