🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

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

HTML

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

Q&A

解決済

2回答

852閲覧

ボタンを押すとJavaScriptのcreateElementでテーブルデータを増やす機能の実装

digitalhimiko

総合スコア142

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2019/12/04 15:05

###質問したいこと:JavaScriptでボタンを押すとテーブルが作られそれぞれのtdタグごとに違う内容を表示したい。

現在、Todoアプリの実装のための練習として、ボタンを押すと、(1)ボタンを押した回数の数値(2)未完了と書かれたボタン(3)削除と書かれたボタン、の以上3つをそれぞれtdタグに入れるプログラムを実装しようとしています。

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <button>増えるよ</button> <div id="hoge"></div> <script> let i = 1; let table = document.createElement("table"); table.setAttribute("border", 1) document.body.appendChild(table); btn = document.querySelector("button"); btn.addEventListener("click", increaseTbl); function increaseTbl() { let tr = document.createElement("tr"); table.appendChild(tr); for (let j = 0; j < 3; j++) { let td = document.createElement("td"); tr.appendChild(td); switch (j) { case 0: td.textContent = "<button>hoge</button>"; console.log(i); td.setAttribute("id", "cont" + i); case 1: td.innerHTML = "<button>未完了</button>"; td.setAttribute("id", "comp" + i); break; case 2: td.innerHTML = "<button>削除</button>"; td.setAttribute("id", "del" + i); } } i++; } </script> </body> </html>

上記の<script></script>の中のswitchを用いて3つのtdそれぞれに適した内容を入れ込もうとしているのですが、どうしても一つ目のtdにも<button>未完了</button>およびid = "comp" + i の方が入ってします。(2つ目のtdと同じ内容が入ってしまう。)

これの原因は何なのでしょうか。
どなたかご教示お願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

breakがないからなのかな

js

1 switch (j) { 2 case 0: 3 td.textContent = "<button>hoge</button>"; 4 console.log(i); 5 td.setAttribute("id", "cont" + i); 6 break; // <- ここのbreakがないのがまずいと思う 7 case 1: 8 td.innerHTML = "<button>未完了</button>"; 9 td.setAttribute("id", "comp" + i); 10 break; 11 case 2: 12 td.innerHTML = "<button>削除</button>"; 13 td.setAttribute("id", "del" + i); 14 break; // <- ここのbreakは、まあ入れておいたほうがいいと思う 15 }

投稿2019/12/04 15:15

rururu3

総合スコア5545

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

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

digitalhimiko

2019/12/04 23:20 編集

ありがとうございます! 確かにbreak忘れのぽかミスでした。。。
guest

0

js

1 switch (j) { 2 case 0: 3 td.textContent = "<button>hoge</button>"; 4 console.log(i); 5 td.setAttribute("id", "cont" + i); 6 break; // ADD 7 case 1: 8 td.innerHTML = "<button>未完了</button>"; 9 td.setAttribute("id", "comp" + i); 10 break; 11 case 2: 12 td.innerHTML = "<button>削除</button>"; 13 td.setAttribute("id", "del" + i); 14 }

【switch - JavaScript | MDN】
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/switch

投稿2019/12/04 15:15

kei344

総合スコア69596

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

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

digitalhimiko

2019/12/04 23:20

いつもありがとうございます! 確かにご指摘の通りでした!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問