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

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

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

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

Q&A

解決済

1回答

307閲覧

取得した値をテーブルに反映させたい

skmr

総合スコア2

JavaScript

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

0グッド

1クリップ

投稿2022/05/21 05:04

編集2022/05/26 01:38

実現したいこと

ユーザーがテーブルに入力した値を取得し,
ある場所(A)にその値が入った新しいテーブルを表示したいと考えています。

発生している問題

Aに新しいテーブルを表示させることはできましたが,
取得した値をそのテーブルに反映させる方法が分かりません。
ネットでも色々調べたのですが解決せず,ご教示いただけるとありがたいです。

イメージ説明

HTML

1 <div id="notetable" class="notetable"> 2 <table id="table"> 3 <tbody> 4 <tr class="labels"> 5 <th class="label" colspan="2">Variables</th> 6 <th>1</th> 7 <th>2</th> 8 <th>3</th> 9 <th>4</th> 10 <th>5</th> 11 </tr> 12 <tr> 13 <th>A</th> 14 <td></td> 15 <td></td> 16 <td></td> 17 <td></td> 18 <td></td> 19 <td></td> 20 </tr> 21 <tr> 22 <th>B</th> 23 <td></td> 24 <td></td> 25 <td></td> 26 <td></td> 27 <td></td> 28 <td></td> 29 </tr> 30 <tr> 31 <th>C</th> 32 <td></td> 33 <td></td> 34 <td></td> 35 <td></td> 36 <td></td> 37 <td></td> 38 </tr> 39 </tbody> 40 </table> 41 <div class="icon"> 42 <button id="submit" class="fas"><i class="fa-solid fa-check"></i></button> 43</div> 44 45<div class="noteview"> 46<div id="noteview" class="noteinner"> 47<p id="top"></p> 48</div> 49</div>

JavaScript

1 2let button = document.getElementById('submit'); 3button.addEventListener('click', function(event2){ 4 event2.preventDefault(); 5 addtable(); 6 }); 7 8function addtable(notes) { 9 // div要素を生成 10 var note = document.createElement('div'); 11 const tool = document.createElement('div'); 12 // ノートテキスト 13 var tablebox = document.createElement('div'); 14 tablebox.className = 'notetable2'; 15 //tableの要素を取得 16 //ノートラベル 17 var li2 = document.createElement('li'); 18 li2.innerText = element.value; 19 li2.className = 'notelabel1'; 20 //タスクラベル 21 var li3 = document.createElement('li'); 22 var currenttask = $('.slider').slick('slickCurrentSlide'); 23 24 if (currenttask === 0) { 25 li3.innerText = 'Step 1: '; 26 note.className = 'sticky1'; 27 tool.className = 'tool1'; 28 } 29 else if (currenttask === 1) { 30 li3.innerText = 'Step 2: '; 31 note.className = 'sticky1'; 32 tool.className = 'tool1'; 33 } 34 else if (currenttask === 2) { 35 li3.innerText = 'Step 3: '; 36 note.className = 'sticky2'; 37 tool.className = 'tool2'; 38 } 39 li3.className = 'notelabel2'; 40 41 //button 42 var button = document.createElement('p'); 43 button.className = 'button' 44 button.innerHTML = ` 45 <button class = "delete" id ="delete"><i class="fa-solid fa-trash"></i></button> 46 ` 47 48 // 49 note.appendChild(tool); 50 tool.appendChild(li3); 51 tool.appendChild(li2); 52 tool.appendChild(button); 53 note.appendChild(tablebox); 54 55 // 生成したdiv要素を追加する 56 var top = document.getElementById('top'); 57 top.after(note);

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

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

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

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

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

yambejp

2022/05/23 00:48

全体的になにをしたいかわかりません。 何をトリガーにどうしたいか明示し、HTMLも例示ください
skmr

2022/05/23 02:31

分かりづらく申し訳ありません,コードを追加しました。 テーブルに入力した後,Submitボタンのクリックをトリガーとしております。 恐れ入りますが,ご回答いただけますと幸いです。
yambejp

2022/05/23 02:44

tdをすべてcontenteditableで処理するのですか? (ちょっと問題のあるUIだとおもいますが) 編集後のデータをそのままtopの下に表示するのでしょうか?
guest

回答1

0

ベストアンサー

仕様に不明な点が多いですが、エスパー的な解釈をして以下でどうでしょう?

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 document.querySelectorAll('td').forEach(x=>x.contentEditable=true); 4 document.querySelector('#submit').addEventListener('click',()=>{ 5 const t=table.cloneNode(true); 6 t.removeAttribute('id'); 7 t.contentEditable=false; 8 document.querySelector('#top').after(t); 9 }); 10}); 11</script> 12 <table id="table" border> 13 <tbody> 14 <tr class="labels"> 15 <th class="label" colspan="2">Variables</th> 16 <th>1</th> 17 <th>2</th> 18 <th>3</th> 19 <th>4</th> 20 <th>5</th> 21 </tr> 22 <tr> 23 <th>A</th> 24 <td></td> 25 <td></td> 26 <td></td> 27 <td></td> 28 <td></td> 29 <td></td> 30 </tr> 31 <tr> 32 <th>B</th> 33 <td></td> 34 <td></td> 35 <td></td> 36 <td></td> 37 <td></td> 38 <td></td> 39 </tr> 40 <tr> 41 <th>C</th> 42 <td></td> 43 <td></td> 44 <td></td> 45 <td></td> 46 <td></td> 47 <td></td> 48 </tr> 49 </tbody> 50 </table> 51<button id="submit" class="fas">submit</button> 52<p id="top">top</p> 53

投稿2022/05/23 02:52

yambejp

総合スコア114825

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

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

skmr

2022/05/23 05:04

ありがとうございます!プログラミング初学者で知識が不十分なのですが,contenteditableはあまり使わない方がよいのでしょうか。いただいたコードを勉強してみます。ご回答くださり,ありがとうございました。
yambejp

2022/05/23 05:08

contenteditableはブラウザによって実装がまちまちで、バグの温床になります。 特にユーザーに入力を指せる場合はinput要素などあらかじめHTMLに用意された 入力インタフェースを利用することを検討ください なお、回答したソースは想定した動作と違いますか? どう違うかを説明いただければそれにあわせた回答もできるかもしれません
skmr

2022/05/26 01:05 編集

返信が遅くなりすみません,まさに提示していただいたようなことをしたいと考えております。本当にありがとうございます。 重ねての質問で大変恐縮ですが,テーブルを要素の一部として(tableboxの中身として)追加したい場合はどうすればよいか分からず,もし可能でしたらご回答いただけますと幸いです。(コードを追加しておきました)よろしくお願いいたします。
yambejp

2022/05/26 01:18

tableboxの仕様がいまいち何をしたいのかわかりません。 何をしたらどうなって欲しいのか、文書で説明できますか? (できれば図示してもらったほうがわかりやすいですが)
skmr

2022/05/26 01:41 編集

図を追加しました。これで伝わりますでしょうか..? もし複数回入力+submitがなされた場合も,再度テーブルと外側のdivを追加したいと思っております。
skmr

2022/05/27 23:26

その後,おかげさまで解決しました。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問