回答編集履歴

1

動くものを置きました。

2020/06/18 12:35

投稿

htsign
htsign

スコア870

answer CHANGED
@@ -1,2 +1,67 @@
1
1
  検証はしておりませんが、取り急ぎ後ろから3行目の `delete_value.addEventListener('click, delete_element, false')` はエラーになりますよね。
2
- 全部文字列で囲ってしまっています。
2
+ 全部文字列で囲ってしまっています。
3
+
4
+ ---
5
+
6
+ とりあえず動くまで持っていきました。
7
+ `delete_element` は `addTaskTarget` に付与し、`delete_element` 内でボタンが押されたかどうか判断するようにしました。
8
+
9
+ ```javascript
10
+ document.addEventListener('DOMContentLoaded', function() {
11
+ const addTaskTrigger = document.getElementsByClassName('addTask-trigger')[0];
12
+ const addTaskTarget = document.getElementsByClassName('addTask-target')[0];
13
+ const addTaskValue = document.getElementsByClassName('addTask-value')[0];
14
+ let nextId = 0;
15
+ const todos = [];
16
+
17
+ const addTask = (task, id) => {
18
+ //テーブル要素を生成する td要素を作る
19
+ const tableItem = document.createElement('tr');
20
+ const addButtonTd = document.createElement('td');
21
+ const idSpanTd = document.createElement('td');
22
+ const taskSpanTd = document.createElement('td');
23
+ const removeButtonTd = document.createElement('td');
24
+
25
+ //Button要素を生成する
26
+ const addButton = document.createElement('button')
27
+ const removeButton = document.createElement('button')
28
+
29
+ //要素内のHTML文章を変更する
30
+ addButton.innerText = '作業中';
31
+ removeButton.innerText = '削除';
32
+ idSpanTd.innerText = id;
33
+ taskSpanTd.innerText = task;
34
+
35
+ //生成したテーブル要素をブラウザに表示する
36
+ tableItem.append(idSpanTd);
37
+ tableItem.append(taskSpanTd);
38
+ tableItem.append(addButtonTd);
39
+ tableItem.append(removeButtonTd);
40
+ addTaskTarget.appendChild(tableItem);
41
+
42
+ //生成したbutton要素を生成する
43
+ addButtonTd.append(addButton);
44
+ removeButtonTd.append(removeButton);
45
+
46
+ const todo = {
47
+ task: 'taskSpanTd',
48
+ status: '作業中'
49
+ };
50
+ todos.push(todo);
51
+ };
52
+
53
+ function delete_element(ev) {
54
+ if (ev.target instanceof HTMLButtonElement && ev.target.textContent === '削除') {
55
+ const row = ev.target.closest('tr');
56
+ addTaskTarget.removeChild(row);
57
+ }
58
+ }
59
+
60
+ addTaskTrigger.addEventListener('click', () => {
61
+ const task = addTaskValue.value;
62
+ addTask(task, nextId++);
63
+ addTaskValue.value = '';
64
+ });
65
+ addTaskTarget.addEventListener('click', delete_element, false);
66
+ });
67
+ ```