• ベストアンサー

テーブルのセル数取得

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を消すわけにはいきません。 どうかご教授下さい。

質問者が選んだベストアンサー

  • ベストアンサー
noname#137826
noname#137826
回答No.1

消したい列のtr要素(element)に対して element.getElementsByTagName('td').length でセルの個数が得られませんか?

menu_selec
質問者

お礼

早々のご返答ありがとうございます。 newCalcTR[i].getElementsByTagName('td').length の方法で取得できました! newTD = newCalcTR[i].insertCell(0); でセルを作成しているので、getElementsByTagName('td')でタグネームを指定しても無駄だと思いこんでいました。。 本当に助かりました! ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

これならどうかな? <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>

menu_selec
質問者

お礼

ご回答ありがとうございます。 頂いたサンプルですが、insertRow()でTRを作成しているので、idの振る処理を追加しなければなりませんよね(汗) #1の方の回答でスマートに解決できました。 >TRの子(TD)は、6個あるが、ブラウザによって、テキストノードがあったりする >なので6個とは限らない。 そうなのですか? また今後私が引っかかりそうな感じがします(汗)ので、素晴らしい情報をありがとうございます。 またよろしくお願いします!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBスクリプトのthis

    私、ASPとVBSでプログラムを作成しているのですが次のような動作が実現できません。 (1)「+」を押すと、行が追加されていって (2)追加された行の「-」を押すと (3)追加された行が消える 助けてください。こんな感じです。thisがオブジェクトとして認識してくれません・・・ 【asp.asp】 <script language=vbscript> Sub InsertRow   intMax = document.all.max.value   intMax = intMax + 1   If intMax = 6 then     Exit Sub   End If   strTD="<img src='../img/img.gif' ID='addTD" & intMax & "' ONCLICK=DeleteRow(this)>"   Set Cell = document.CreateElement("TD")   Set Row = document.all("TBL").InsertRow(-1)   Row.appendChild(Cell)   Cell.InnerHTML = strTD   document.all.max.value = intMax End Sub Sub DeleteRow(e)   Row = Right(e.id, 1)   Row = CInt(Row)   intMax = document.all.max.value   If intMax = 0 Then     Exit Sub   End If   TBL.DeleteRow(Row)   For i = Row + 1 To intMax     document.all("addTD" & i).value = i - 1   Next   intMax = intMax - 1     document.all.max.value = intMax End Sub </script> ---省略--- <BODY> <HTML>   <!-- #include file="../include/include.asp" --> </BODY> </HTML> ---省略--- 【include.asp】   Response.Write "<TABLE ID='TBL'>" & vbCrLf   Response.Write " <TR><TD WIDTH='5%'>" & vbCrLf   Response.Write " <IMG SRC='../img/img.gif' ONCLICK=InsertRow()>" & vbCrLf   Response.Write " </TD></TR>" & vbCrLf   Response.Write "<TABLE>" & vbCrLf

  • jQuery datepickerを複数使いたい

    javascript で行を追加するDOMを作成しました。 最初の1回だけdatepickerで日付をクリックすると該当のテキストボックスに日付が問題なく代入されます。 追加ボタンをクリックで行を追加した際にもjQuery datepickerを動作させるにはどうしたら良いでしょうか? function add() { var objTBL = document.getElementById("request_tb" + num); if (!objTBL) return; var count = objTBL.rows.length; // 最終行に新しい行を追加 var row = objTBL.insertRow(count); // 列の追加 var c1 = row.insertCell(0); var c2 = row.insertCell(1); var c3 = row.insertCell(2); // 各列に表示内容を設定 c1.innerHTML = '<span class="seqno' + count +'">第' + count + '日時</span>'; c2.innerHTML = '<input type="text" name="date' + count + '" class="datepicker'+ count+'" id="datepicker">'; c3.innerHTML = '<img src="img.gif">&nbsp;カレンダーで選ぶ</a>'; $('datepicker'+count).datepicker({ numberOfMonths: 2, dateFormat: 'yy-mm-dd', changeYear: false, showButtonPanel: true, minDate:0 }); } <input type="button" id="add" onClick="add()" value="追加"> ご教授の程、宜しくお願いしますm(__)m

  • scriptに関して

    scriptで下記のようにcheckboxと削除ボタンを作りました。 checkをした行を削除ボタンで削除をしたいのですが、 今のソースの状態では、checkboxを押した瞬間に行が消えます。 どこの書き方がいけないのでしょうか? <scriptソース> function AddTableRows1(){ var table1 = document.getElementById("table1"); var row1 = table1.insertRow(table1.rows.length); var cell1 = row1.insertCell(0); var cell2 = row1.insertCell(1); var cell3 = row1.insertCell(2); cell1.setAttribute("class","name"); cell2.setAttribute("class","naiyo"); cell3.setAttribute("class","zyoukyou"); var HTML1 = '<input type="checkbox" onclick="remove_row(this)"><input name="gyoumuname" ID="gyoumuname" type="text" ><input type="hidden" name="gyoumuno" Id="gyoumuno" value="0">'; var HTML2 = '<textarea name="gyoumunaiyo" ID="gyoumunaiyo" Style="width:50em;height:5em"></textarea>'; var HTML3 = '<input name="gyoumuzyoukyou" ID="gyoumuzyoukyou" >'; cell1.innerHTML = HTML1; cell2.innerHTML = HTML2; cell3.innerHTML = HTML3; } function remove_row(o){ var TR = o.parentNode.parentNode; TR.parentNode.deleteRow(TR.sectionRowIndex); } <ボタンソース> <input class="btn1" type="button" value="削除" onclick="remove_row(this)">

  • insertRowメソッド内で計算式を書く方法

    http://jsajax.com/Articles/TableInsertRow/157を参考に、[行を挿入]ボタンをクリックすると最終行の下に行が追加され、その中にテキストボックスを配置し計算を行うようにしたいと思い、下記のソースを記述しました。 そして追加した行で正常に計算を行うために、insertRow内のinnerHTMLのgoods_a_3の3の部分を動的に設定したり、calc内の計算式を動的にループさせる必要があると思ったのですが、どのように記述すれば良いか分からなかったため、アドバイスいただける方がいらっしゃいましたら、ご教示の程、よろしくお願いします。 <script type="text/javascript"> <!-- window.onload = function() { document.getElementById("btnInsert").onclick = insertRow; } function insertRow() { var tbl = document.getElementById("Table1"); var row = tbl.insertRow(2); var cell1 = row.insertCell(0); var cell2 = row.insertCell(1); var cell3 = row.insertCell(2); cell1.innerHTML = "<input type=\"text\" name=\"goods_a_3\" size=\"3\" value=\"0\" onchange=\"calc();\" />*"; cell2.innerHTML = "<input type=\"text\" name=\"goods_b_3\" size=\"3\" value=\"0\" onchange=\"calc();\" />="; cell3.innerHTML = "<input type=\"text\" name=\"ans3\" size=\"8\" value=\"0\" disabled=\"disabled\" />"; } function calc(){ document.form1.ans1.value = document.form1.goods_a_1.value * document.form1.goods_b_1.value; document.form1.ans2.value = document.form1.goods_a_2.value * document.form1.goods_b_2.value; } // --> </script> </head> <body> <form action="#" name="form1" id="form1"> <table id="Table1" border="1"> <tr> <td><input type="text" name="goods_a_1" size="3" value="0" onchange="calc();" />*</td> <td><input type="text" name="goods_b_1" size="3" value="0" onchange="calc();" />=</td> <td><input type="text" name="ans1" size="8" value="0" disabled="disabled" /></td> </tr> <tr> <td><input type="text" name="goods_a_2" size="3" value="0" onchange="calc();" />*</td> <td><input type="text" name="goods_b_2" size="3" value="0" onchange="calc();" />=</td> <td><input type="text" name="ans2" size="8" value="0" disabled="disabled" /></td> </tr> </table> </form> <br /> <input id="btnInsert" type="button" value="行を挿入" /> 以上、よろしくお願いします。

  • 文字が入力されているセルの位置取得について

    セルに文字が入力されている 最左列・最右列・最上行・最下行 を求める場合、 最左列=ActiveSheet.UsedRange.Column 最右列=ActiveCell.SpecialCells(xlLastCell).Column 最上行=ActiveSheet.UsedRange.Row 最下行=ActiveCell.SpecialCells(xlLastCell).Row でよろしいですか? 教えて下さい。

  • エクセルでのセル範囲取得

    セルの選択された範囲をVBAで取得する時、選択開始行は「ActiveCell.Row」で取得出来ますが、 選択終了行を取得するプロパティは無いのでしょうか? 「Selection.Cells.Count」を使用して、選択範囲の行数が返って来るのは分かっています。 問題なのはセルの選択順序です。 セルの範囲選択を上から下方向の場合は問題無いのですが、下から上に選択した場合、 選択開始行より下なのか、上なのかが判断出来ません。 そこで、選択範囲の行数ではなく、選択範囲終了の「行位置」が取得できる方法が無いかと色々調べてみましたが、見つけられませんでした。 どなたか御存知でしたら教えて下さい。

  • 選択しているセルの行数の取得

    エクセルのマクロに関する質問です。 ある表を作っているのですが、 その表の中で不要になった行を削除するマクロを作っています。 不要な行のセルを選択してアクティブにし、 マクロを登録したボタンをクリックすると その行が削除されるというものです。 その際に、削除は1行ずつ行いたいと考えています。 (一度に2行削除させたくない。) そこで、もし2行以上を選択した場合には ボタンをクリックした時に 「2行以上は選択できません」 とメッセージを表示し、 マクロを中断させたいのです。 その時に選択しているのが1行なのか 2行以上なのかを取得する方法をおしえてください。

  • トリガって、自分自身のテーブルを操作することはできない?

    あるテーブルに行を挿入すると、そのテーブルの1分前以上に挿入された 行を全て削除するようなトリガーの作成は可能でしょうか? トリガーは作れましたが、そのテーブルに行を挿入すると、 > Can't update table 'submitted' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. といわれます。 トリガって、自分自身のテーブルを操作することはできないんですか? 例えば、table_a に行を挿入すると、table_a に行を挿入するトリガーを 作るのは、無限ループになるので駄目なのは分かります。 でも、table_a に行を挿入すると、table_a のある行を削除するトリガーも 作れないようですがどうしてでしょう?

    • ベストアンサー
    • MySQL
  • Excelで特定の数字の間にあるセルの数を数える方法

    A1:A20に順に 11、10、25、66、48、84、33、31、46、78、44、60、87、86、59、83、64、43、43、25 と20の数値が入っています A3にある25とA20にある25との間のセル数(例の場合16)を数える方法を教えてください。 作業列に25のあるセルの行番号を出す方法、=IF(A:A=25,ROW(),"")は、わかったのですが、これをどのように使えば25の間のセル数を数えられるかわかりません。 実際の数は、1000行ほどあり特定の数値は2つしかないがその位置は決まっていないのです。

  • DreamWeaver8 テーブル間のセル行幅変更

    DreamWeaver8にて4行3列のテーブルを作成しました。 各セルの中に画像を隙間なく埋め込もうとしているのですが、 画像の上下に余白がついてしまうので、セル幅を変えようと セルのラインをクリック→ドラッグして行幅を狭くしたいのですが、 他の動かしたくないセルの行幅までも動いてしまい、テーブル全体が 大きくなってしまいます。 任意の1つのセルのみ行列幅を変更したい場合はどのように すればよろしいのでしょうか。