ラジオボタンごとにタスクの表示、非表示を切り替えたい
前提 実現したいこと
JavascriptでTODOリストを作成しております。
ラジオボタンを押した際に表示の切り替えを行いたいです。
発生している問題
引数を受け渡す処理が上手くできない
どのように書き足したら、ブラウザに反映されるようになるのでしょうか。
該当のソースコード
<!DOCTYPE html> <html lang="jp"> <head> <meta charset="UTF-8"> <title>TODO</title> </head> <body> <h1>ToDoリスト</h1> <p> <input type="radio" name="list" value="all" id="radioAll" onchange="change()">すべて <input type="radio" name="list" value="work" id="radioWork" onchange="change()">作業中 <input type="radio" name="list" value="done" id="radioStatus" onchange="change()">完了 </p> <table> <thead> <th>ID</th> <th>コメント</th> <th>状態</th> <th></th> </thead> <tbody id="todo-body"> </tbody> </table> <h2>新規タスクの追加</h2> <input id="text" type="text"> <button id='btn'>追加</button> <script src="js/main.js"></script> </body> </html>
'usestrict' { const tableBody = document.getElementById('todo-body') const text = document.getElementById('text'); const todos = []; document.querySelector('button').addEventListener('click', () => { const workBtn = document.createElement('button'); workBtn.textContent = '作業中' const todo = {}; todo.tableComment = text.value; todo.tableStatus = workBtn; workBtn.addEventListener('click', () => { if (workBtn.textContent === '作業中') { workBtn.textContent = '完了' } else { workBtn.textContent = '作業中' }; return workBtn; }) createRemoveButton = (tableRecord) => { const number = tableRecord.rowIndex - 1; const removeBtn = document.createElement('button'); removeBtn.textContent = '削除' removeBtn.addEventListener('click', () => { todos.splice(number, 1); showTodos(); }) return removeBtn; }; if (todo) { todos.push(todo); text.value = ''; showTodos(); } }); const showTodos = () => { tableBody.textContent = ''; todos.forEach((todo, number) => { const tableRecord = document.createElement('tr'); tableBody.appendChild(tableRecord); const tableId = document.createElement('td'); const comment = document.createElement('td'); const status = document.createElement('td'); const action = document.createElement('td'); tableId.textContent = number; comment.textContent = todo.tableComment; const work = todo.tableStatus tableRecord.appendChild(tableId); tableRecord.appendChild(comment); tableRecord.appendChild(status); status.appendChild(work); tableRecord.appendChild(action); action.appendChild(createRemoveButton(tableRecord)); const radioAll = document.getElementById('radioAll'); const radioWork = document.getElementById('radioWork'); const radioDone = document.getElementById('radioDone'); }); }; function change(){ if (radioAll.checked) { return showTodos(todos); } else if (radioWork.checked) { const todoWork = todos.filter((todo) => { return todo.tableStatus === '完了' }) return showTodos(todoWork); } else if (radioDone.checked) { const todoDone = todos.filter((todo) => { return todo.tableStatus === '作業中' }) return showTodos(todoDone); } } }
試したこと
__ const showTodos = () => {}__
ここの中で引数を受け渡す処理をするのかなと思い色々試したのですが、うまくいきませんでした。
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/14 18:29
2021/06/15 01:19
2021/06/15 05:52 編集
2021/06/15 05:53
2021/06/15 07:51
2021/06/16 01:57 編集
2021/06/16 04:20