質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

10973閲覧

配列で作ったtableの中にボタンとチェックボックスを追加したい

umi3

総合スコア18

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/06/17 04:30

編集2021/06/17 06:08

前提・実現したいこと

jsでfor文を使ってtableを作成しました、ですが、添付写真の様にtableの最後に
行の「削除ボタン」を作りたいです。
配列やtable関係なしで作ったほうが良いのでしょうか?
それともtableを追加する過程で一緒に追加できるのでしょうか?

もう一つ、配列の最初のセルでチェックボックスもつけようと思っております。
初心者で勉強中なので解説も付けていただけると嬉しいです。
よろしくお願いいたします。イメージ説明
イメージ説明

//新しく記入した部分 for (var i = 0; i < 9; i++){ cell = row.insertCell(-1) //で行に <td> を追加して、その<td>を返します。 cell.textContent = todolists[i] //で <td>内にテキストを入れられます。 } var checkbox = row.insertCell(0); var clearbtn = row.insertCell(-1); checkbox.innerHTML = "<td><input type='checkbox'></td>"; clearbtn.innerHTML = "<td><button type='submit'>削除する</td>";

発生している問題・エラーメッセージ

html

1<table class="main-table"> 2 <tr class="table-header"> 3 <th></th> 4 <th>ID</th> 5 <th>予定</th> 6 <th>日時</th> 7 <th>お金</th> 8 <th>期日</th> 9 <th>持ち物</th> 10 <th>メモ</th> 11 <th></th> 12 </tr> 13</table>

JavaScript

1var j = 1; 2document.getElementById("addButton").onclick = function(){ 3const todo =document.getElementById('todo').value//予定 4const date =document.getElementById('date').value//日時 5const price =document.getElementById('price').value//お金 6const duedate =document.getElementById('duedate').value//期日 7const item =document.getElementById('item').value//持ち物 8const memo =document.getElementById('memo').value//メモ 9 10const todolists = [todo,date,price,duedate,item,memo]; 11console.log(todolists); 12mainTable = document.querySelector('.main-table') 13// でテーブル要素を取得できます。 14row = mainTable.insertRow(-1) //でテーブルに行を追加してその行を返します。 15 16todolists.unshift(j); 17todolists.unshift(false); 18todolists.push("ここに行削除ボタンを付けたい"); 19 20for (var i = 0; i < 9; i++){ 21cell = row.insertCell(-1) //で行に <td> を追加して、その<td>を返します。 22cell.textContent = todolists[i] //で <td>内にテキストを入れられます。 23} 24 25j += 1; 26console.log(j); 27} 28

補足情報

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

todolists は文字列の配列になっているので、チェックボックスや削除ボタンをそこに入れようとするのは不適切です。入れるのは不可能ではないのですが、妙なコードになるのでお勧めしません。

forループの前後で個別に足すのはいかがでしょうか。

js

1let row = mainTable.insertRow(-1); 2let checkboxCell = row.insertCell(-1); 3// checkboxCell.innerHTML や checkboxCell.appendChild() などでチェックボックスを足す 4... 5for (let text of todolists){ 6 row.insertCell(-1).textContent = text; 7} 8let buttonCell = row.insertCell(-1); 9// buttonCell.innerHTML や buttonCell.appendChild() などで削除ボタンを足す

投稿2021/06/17 04:43

int32_t

総合スコア20884

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umi3

2021/06/17 06:03

先ほどと引き続き回答ありがとうございます。 ずっと考えていてチェックボックスと削除ボタンを追加することが出来たのですが、 削除ボタンがうまくtableの中に入りません。。。 念の為今どんな感じか写真を添付しておきます。
int32_t

2021/06/17 06:16

todolists内ににメモの後に余計な項目が入っているか、forループの後にrow.insertCell()が2回以上呼ばれているんじゃないでしょうか。 「Chrome DevTools ステップ実行」で検索して、デバッグしてみてください。
umi3

2021/06/17 09:44

試行錯誤してやってみた結果なかなかうまく動かなかったので、 tableの外に出してしまっても良いのではないか? という形で進めることにしました。
guest

0

javascript

1<script> 2document.addEventListener('click',e=>{ 3 if(e.target.closest('[value="del"]')){ 4 e.target.closest('tr').remove(); 5 } 6}); 7</script> 8 9<table> 10<tr><td>1</td><td><input type="button" value="del"></td></tr> 11<tr><td>2</td><td><input type="button" value="del"></td></tr> 12<tr><td>3</td><td><input type="button" value="del"></td></tr> 13</table>

投稿2021/06/17 04:35

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問