
TODOリストをJavascriptを使って作成しています。練習のため、ライブラリーは使用していません。
やりたいことは、TODOリストを最終的に作りたく、
ADDボタンを押すと削除ボタン付きリストが追加され、その削除ボタンを押すと、その項目が削除されるものを作りたいと思っています。
クラス構文を使っています。
削除ボタンを押すとき、以下のやり方だとエラーが出てしまっています。
以下はAddボタンを二回おして、1,2を追加し、1の削除ボタンを押したときの画像です。
一応削除はできていますが、適切な書き方でないようです。どんな点がよくないのでしょうか?このように、ボタンを押したとき、その項目だけ削除したい場合、どのように書けばよろしいでしょうか?
ご教授ください。
html
1 2<!DOCTYPE html> 3<html lang="ja"> 4<head> 5 <meta charset="utf-8"> 6 <title>Javascriptの練習</title> 7 8 </style> 9</head> 10<body> 11 <button id="add">ADD</button> 12 <li>test</li> 13 <ul id = 'ul'> 14 <li>0<button class = 'delete' id='delete0'>×</button></li> 15 </ul> 16 17<script> 18class Li { 19 constructor(arg_num) { 20 this.num = arg_num; 21 this.ul = document.getElementById('ul') 22 this.li = document.createElement('li'); 23 this.li.textContent = this.num; 24 this.button = document.createElement('button'); 25 this.button.id = "delete" + this.num; 26 this.button.classList.add("delete"); 27 this.button.textContent = '×'; 28 this.li.appendChild(this.button); 29 this.ul.appendChild(this.li); 30 31 this.delBtn = document.querySelectorAll('.delete'); 32 this.delBtn.forEach(index => { 33 index.addEventListener('click', (e) =>{ 34 console.log('delBtnクリック') 35 if(index.classList.contains('delete')) { 36 console.log('yes') 37 this.ul.removeChild(index.parentNode); 38 }//if 39 });//delBtnClick 40 });//forEach 41 }//constructor 42 43}//Li 44 45const li_el = []; 46const addBtn = document.getElementById('add'); 47let num = 1; 48addBtn.addEventListener('click', () => { 49 li_el.push(new Li(num)); 50 num++; 51}); 52</script> 53</body> 54</html> 55



回答2件
あなたの回答
tips
プレビュー