質問するログイン新規登録

質問編集履歴

2

タイトルの変更

2022/02/25 07:09

投稿

uratarosu
uratarosu

スコア49

title CHANGED
@@ -1,1 +1,1 @@
1
- javaScriptで制作したToDoアプリをストレージにデータ管理したい
1
+ javaScriptで制作したToDoアプリをlocalストレージで管理したい
body CHANGED
File without changes

1

コードの記載忘れ

2021/12/27 01:09

投稿

uratarosu
uratarosu

スコア49

title CHANGED
File without changes
body CHANGED
@@ -50,6 +50,141 @@
50
50
 
51
51
  ```
52
52
 
53
+ ``` javaScript
54
+ import "./styles.css";
55
+
56
+ const onClickAdd = () => {
57
+ // テキストを取得
58
+ const inputText = document.getElementById("add-text").value;
59
+ document.getElementById("add-text").value = "";
60
+ creteIncompleteList(inputText);
61
+ addStrage();
62
+ }
63
+
64
+ // 未完了リストに追加する関数
65
+ const creteIncompleteList = (text) => {
66
+ // divタグの生成
67
+ const div = document.createElement("div");
68
+ div.className = "list-row";
69
+
70
+ // liタグの生成
71
+
72
+ const li = document.createElement("li");
73
+ li.innerText = text
74
+
75
+ // divタグの子要素にliを設定
76
+ div.appendChild(li);
77
+
78
+ //未完了のリストに追加
79
+ document.getElementById("imcomplete-list").appendChild(div);
80
+
81
+ // button(完了)タグを生成
82
+ const completeButton = document.createElement("button");
83
+ completeButton.innerText = "完了";
84
+ completeButton.addEventListener("click", ()=>{
85
+ // 押された完了ボタンの親divを未完了リストから削除
86
+ deleteFromCompleteButton(completeButton.parentNode);
87
+ deleteStrage();
88
+
89
+ //完了リストに追加
90
+ const addTarget = completeButton.parentNode;
91
+
92
+ //TODO内容のテキストの取得
93
+ const text = addTarget.firstElementChild.innerText;
94
+
95
+ //div以下を初期化
96
+ addTarget.textContent = null;
97
+
98
+ // liを生成
99
+ const li = document.createElement("li");
100
+ li.innerText = text;
101
+
102
+ // 戻るボタン
103
+ const backButton = document.createElement("button")
104
+ backButton.innerText = "戻す";
105
+
106
+ //
107
+ // backButtonにイベントを追加
108
+ backButton.addEventListener("click",()=>{
109
+ const backTarget = backButton.parentNode;
110
+ const text = backTarget.firstChild.innerText;
111
+
112
+ // 削除
113
+ document.getElementById("complete-list").removeChild(backTarget);
114
+ creteIncompleteList(text);
115
+ })
116
+
117
+ const IncompleteButton = document.createElement("button");
118
+ IncompleteButton.innerText ="削除";
119
+ // backButtonにイベントを追加
120
+ IncompleteButton.addEventListener("click",()=>{
121
+
122
+ // 削除
123
+ document.getElementById("complete-list").removeChild(IncompleteButton.parentNode);
124
+ })
125
+
126
+ // divタグの子要素に各要路を追加
127
+ addTarget.appendChild(li);
128
+ addTarget.appendChild(backButton);
129
+ addTarget.appendChild(IncompleteButton);
130
+
131
+
132
+ //完了のリストに追加
133
+ document.getElementById("complete-list").appendChild(addTarget);
134
+ })
135
+
136
+ const deleteButton = document.createElement("button");
137
+ deleteButton.innerText = "削除";
138
+ deleteButton.addEventListener("click", ()=>{
139
+ // 押された削除ボタンの親divを未完了リストから削除
140
+ deleteFromCompleteButton(deleteButton.parentNode);
141
+
142
+ })
143
+
144
+ div.appendChild(completeButton);
145
+ div.appendChild(deleteButton);
146
+
147
+
148
+ };
149
+
150
+ // 未完了リストから指定の要素を削除
151
+
152
+ const deleteFromCompleteButton = (target)=>{
153
+ document.getElementById("imcomplete-list").removeChild(target);
154
+ }
155
+
156
+ document.getElementById("add-button").addEventListener("click", () => onClickAdd());
157
+
158
+
159
+
160
+
161
+ function getStrage() {
162
+ let list = localStorage.getItem("TodoList");
163
+ if (list === null) {
164
+ return [];
165
+ } else {
166
+ return JSON.parse(list);
167
+ }
168
+ }
169
+
170
+ function addStrage(item) {
171
+ let list = getStrage();
172
+ list.push(item);
173
+ setLocal(list);
174
+ }
175
+
176
+ function deleteStrage(index) {
177
+ let list = getStrage();
178
+ list.splice(index, 1);
179
+ localStorage.setItem("TodoList", JSON.stringify(list));
180
+ }
181
+
182
+ function setStrage(list) {
183
+ localStorage.setItem("TodoList", JSON.stringify(list));
184
+ }
185
+
186
+ ```
187
+
53
188
  ### 試したこと
54
189
 
55
190
  deleteStrage()の引数を与えるために