罫表追加ボタンを押すと既存のtableの中に新しくtableを追加する
処理を作成しましたが、追加した罫表が正しく表示されません。
罫表追加後、innerHTMLでテキストボックスに表示し、それをコピーして、HTMLで開いてみるときちんと追加されているようです。
なぜtableの中のtableが作られないのでしょうか。
別の方法でも良いので、ボタンをおした時に動的にtableの中にtableを追加する方法ありますでしょうか。
以下HTMLとjsです。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="kei_test.js"></script>
</head>
<body>
<div>
<input type="button" value="罫表追加" onclick="addDanraku('keihyou')" />
</div>
<form name='form1'>
<input type="text" name="strJbnTxt" size=100 maxlength=10000 />
</form>
<table width="100%" border=1 style='border-collapse:collapse;border:none'>
<tr>
<td style='width:100.0%;border:solid windowtext 1.0pt'>
<p>あいうえお。</p>
</td>
</tr>
<tr>
<td style='width:100.0%;border:solid windowtext 1.0pt;'>
<p>かきくけこ。</p>
</td>
</tr>
</table>
</body>
</html>
以下jsファイル
var cellCnt = 0;
var rowArray = new Array(100);
var colArray = new Array(100);
window.onload = init;
function init(){
var mouseFlg = 0;
var col;
var row;
var td = document.getElementsByTagName("td");
var length = td.length;
//alert('td数:'+length);
for(var i = 0; i < length; i++) {
td[i].onclick = function (){
this.style.backgroundColor = "yellow";
//列番号取得
var befTd = this.previousSibling;
var col = 0;
while(befTd){
if(befTd.nodeName=="TD")col++;
befTd=befTd.previousSibling;
}
//行番号取得
var befTr = this.parentNode.previousSibling;
var row=0;
while(befTr){
if(befTr.nodeName=="TR") row++;
befTr=befTr.previousSibling;
}
rowArray[cellCnt] = row;
colArray[cellCnt] = col;
cellCnt = cellCnt + 1;
}
}
}
function addDanraku( danraku ){
if( cellCnt != 1){
alert("1つのみ選択して実行してください。");
return;
}
//trを取得
var trNode = document.getElementsByTagName("tr");
var trLength = trNode.length;
for(var i = 0; i < trLength; i++) {
if( i == rowArray[0]){
//新しい段落(tr)を追加
var newTr = document.createElement("tr");
var nextTr = trNode[i].nextSibling;
var oyaTable = nextTr.parentNode;
oyaTable.insertBefore(newTr, nextTr);
//tdを追加
var newTd = document.createElement("td");
newTd.style.width = "100.0%";
newTd.style.border = "solid windowtext 1.0pt";
newTr.appendChild(newTd);
//tableノードを追加
alert(newTd.nodeName);
var newTable = document.createElement("table");
newTable.style.border = "none";
newTable.style.borderCollapse = "collapse";
newTd.appendChild(newTable);
//trノードを追加
for(var j = 0; j < 2; j++) {
var newTr2 = document.createElement("tr");
newTable.appendChild(newTr2);
for(var k = 0; k < 2; k++) {
//tdノードを追加
var newTd2 = document.createElement("td");
newTd2.style.width = "100.0pt";
newTd2.style.border = "solid windowtext 1.0pt";
newTr2.appendChild(newTd2);
//pノードを追加
var newP2 = document.createElement("p");
newTd2.appendChild(newP2);
//textノードを追加
var newText2 = document.createTextNode("追加テスト");
newP2.appendChild(newText2);
}
}
}
}
form1.strJbnTxt.value = newTr.parentNode.parentNode.parentNode.innerHTML;
}
No.1ベストアンサー
- 回答日時:
あんまりちゃんと見てませんが、tbodyを扱っているでしょうか?
tbodyは1つの場合書かなくてもよい事になっていますが、記述の省略が許されているだけで、必ず存在します。
Javascriptで生成する場合、ちゃんとtbodyを扱わないと、
tableに直接trをappendChildで追加しても表示されないのかも?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptで文字列の特定文字...
-
翌月を取得するGASが分かりません
-
C#OpenCv V4にのエラーに関する...
-
var exports = exports || {}; ...
-
GAS アンケート回答後の自動返...
-
アルファベットABCD…をスマート...
-
setTimeoutによる繰り返しが途...
-
google apps scriptの終了のさせ方
-
google map apiで下記のhtmlが...
-
googleスプレッドシートのApps ...
-
今日からnヶ月後(前)
-
ボタンを押すことでテキストエ...
-
引数なしの関数で疑問です
-
javascriptで複数キーワード検...
-
GASでGoogleフォームの自動返信...
-
なぜmatchメソッドがエラーにな...
-
ASP.NETのコントロールの値をJa...
-
javascript修正依頼
-
第3日曜日のみの日付を取得、...
-
Javascriptで指定した位置の文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
メールフォームの日付入力フォ...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
GASでGoogleフォームの自動返信...
-
なぜmatchメソッドがエラーにな...
-
翌月を取得するGASが分かりません
-
ローカルにあるファイルを検索...
-
HTMLで作った時報アプリが動き...
-
ASP.NETのコントロールの値をJa...
-
C# 演算 奇数と偶数 表現の仕方
-
html javascript リンク先アド...
-
gas スプレッドシートがアクテ...
-
javascriptでテーブルに追加し...
-
VSCODE[Python]の設定について
-
JavaScriptで決まった「時刻」...
-
ASP.NET MVCでObjectをjsに渡す
-
イベントが初めの一回しか起き...
-
jqGridについて
おすすめ情報