前提・実現したいこと
JavascriptのDOM操作で、追加したボタン要素(削除ボタン)を使って
追加したtd要素を削除したいと考えておりますが、以下のエラーコードが出てしまいます。
発生している問題・エラーメッセージ
Uncaught TypeError: Failed to execute 'addEventListener' on 'EventTarget': 2 arguments required, but only 1 present. at HTMLButtonElement.<anonymous> (main.js:57)
HTML
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel ="stylesheet" href="css/style.css"> <title>Todoリスト</title> </head> <body> <h1>Todoリスト</h1> <p> <input type="radio" name="status" value="1" checked="checked">全て <input type="radio" name="status" value="2">作業中 <input type="radio" name="status" value="3">完了 </p> <p></p> <table> <thead> <th>ID</th> <th>コメント</th> <th>状態</th> <th></th> </thead> <tbody class ="addTask-target"></tbody> </table> <h2>新規タスクの追加</h2> <input class="addTask-value" type="text" /> <button class="addTask-trigger" type="button">追加</button> <script src="js/main.js"></script> </body> </script> </html>
###Javascript
document.addEventListener('DOMContentLoaded', function() { const addTaskTrigger = document.getElementsByClassName('addTask-trigger')[0]; const addTaskTarget = document.getElementsByClassName('addTask-target')[0]; const addTaskValue = document.getElementsByClassName('addTask-value')[0]; let nextId = 0; const todos = []; const addTask = (task,id) => { //テーブル要素を生成する td要素を作る const tableItem = document.createElement('tr'); const addButtonTd = document.createElement('td'); const idSpanTd = document.createElement('td'); const taskSpanTd = document.createElement('td'); const removeButtonTd = document.createElement('td'); //Button要素を生成する const addButton = document.createElement('button') const removeButton = document.createElement('button') //要素内のHTML文章を変更する addButton.innerText = '作業中'; removeButton.innerText = '削除'; idSpanTd.innerText = id; taskSpanTd.innerText = task; //生成したテーブル要素をブラウザに表示する tableItem.append(idSpanTd); tableItem.append(taskSpanTd); tableItem.append(addButtonTd); tableItem.append(removeButtonTd); addTaskTarget.appendChild(tableItem); //生成したbutton要素を生成する addButtonTd.append(addButton); removeButtonTd.append(removeButton); const todo = { task: 'taskSpanTd', status: '作業中' }; todos.push(todo); }; function delete_element(){ tbody.remoChild(tbody.firstChild); } addTaskTrigger.addEventListener('click',() => { const task = addTaskValue.value; addTask(task,nextId ++); addTaskValue.value = ''; const delete_value =document.querySelector('button'); delete_value.addEventListener('click, delete_element, false') }); });
試したこと
function delete_element(){ tbody.remoChild(tbody.firstChild); } addTaskTrigger.addEventListener('click',() => { const task = addTaskValue.value; addTask(task,nextId ++); addTaskValue.value = '';
上記、削除と追加を同じ関数でまとめましたが、上手く動作せずでした。
delete_elementが認識されていないのでその辺りに問題があるのかなと考えています。
ID、classなどを取得して、加工して、HTMLに戻すという一連の動作は頭で理解しているのですが、
HTMLには削除ボタンに関するID、classがついていないため、こういった場合はどうするのかわからない状況です。
(削除ボタンがremoveButtonTd.append(removeButton);とJavascriptで生成された要素であるため)
お手数ですがご確認、ご教示宜しくお願い致します。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/18 12:12
2020/06/18 12:20
2020/06/18 12:36
2020/06/18 14:22
2020/06/18 14:30 編集
2020/06/18 14:30