質問編集履歴

2

タイトルの変更

2022/02/25 07:09

投稿

uratarosu
uratarosu

スコア49

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

1

コードの記載忘れ

2021/12/27 01:09

投稿

uratarosu
uratarosu

スコア49

test CHANGED
File without changes
test CHANGED
@@ -102,6 +102,276 @@
102
102
 
103
103
 
104
104
 
105
+ ``` javaScript
106
+
107
+ import "./styles.css";
108
+
109
+
110
+
111
+ const onClickAdd = () => {
112
+
113
+ // テキストを取得
114
+
115
+ const inputText = document.getElementById("add-text").value;
116
+
117
+ document.getElementById("add-text").value = "";
118
+
119
+ creteIncompleteList(inputText);
120
+
121
+ addStrage();
122
+
123
+ }
124
+
125
+
126
+
127
+ // 未完了リストに追加する関数
128
+
129
+ const creteIncompleteList = (text) => {
130
+
131
+ // divタグの生成
132
+
133
+ const div = document.createElement("div");
134
+
135
+ div.className = "list-row";
136
+
137
+
138
+
139
+ // liタグの生成
140
+
141
+
142
+
143
+ const li = document.createElement("li");
144
+
145
+ li.innerText = text
146
+
147
+
148
+
149
+ // divタグの子要素にliを設定
150
+
151
+ div.appendChild(li);
152
+
153
+
154
+
155
+ //未完了のリストに追加
156
+
157
+ document.getElementById("imcomplete-list").appendChild(div);
158
+
159
+
160
+
161
+ // button(完了)タグを生成
162
+
163
+ const completeButton = document.createElement("button");
164
+
165
+ completeButton.innerText = "完了";
166
+
167
+ completeButton.addEventListener("click", ()=>{
168
+
169
+ // 押された完了ボタンの親divを未完了リストから削除
170
+
171
+ deleteFromCompleteButton(completeButton.parentNode);
172
+
173
+ deleteStrage();
174
+
175
+
176
+
177
+ //完了リストに追加
178
+
179
+ const addTarget = completeButton.parentNode;
180
+
181
+
182
+
183
+ //TODO内容のテキストの取得
184
+
185
+ const text = addTarget.firstElementChild.innerText;
186
+
187
+
188
+
189
+ //div以下を初期化
190
+
191
+ addTarget.textContent = null;
192
+
193
+
194
+
195
+ // liを生成
196
+
197
+ const li = document.createElement("li");
198
+
199
+ li.innerText = text;
200
+
201
+
202
+
203
+ // 戻るボタン
204
+
205
+ const backButton = document.createElement("button")
206
+
207
+ backButton.innerText = "戻す";
208
+
209
+
210
+
211
+ //
212
+
213
+ // backButtonにイベントを追加
214
+
215
+ backButton.addEventListener("click",()=>{
216
+
217
+ const backTarget = backButton.parentNode;
218
+
219
+ const text = backTarget.firstChild.innerText;
220
+
221
+
222
+
223
+ // 削除
224
+
225
+ document.getElementById("complete-list").removeChild(backTarget);
226
+
227
+ creteIncompleteList(text);
228
+
229
+ })
230
+
231
+
232
+
233
+ const IncompleteButton = document.createElement("button");
234
+
235
+ IncompleteButton.innerText ="削除";
236
+
237
+ // backButtonにイベントを追加
238
+
239
+ IncompleteButton.addEventListener("click",()=>{
240
+
241
+
242
+
243
+ // 削除
244
+
245
+ document.getElementById("complete-list").removeChild(IncompleteButton.parentNode);
246
+
247
+ })
248
+
249
+
250
+
251
+ // divタグの子要素に各要路を追加
252
+
253
+ addTarget.appendChild(li);
254
+
255
+ addTarget.appendChild(backButton);
256
+
257
+ addTarget.appendChild(IncompleteButton);
258
+
259
+
260
+
261
+
262
+
263
+ //完了のリストに追加
264
+
265
+ document.getElementById("complete-list").appendChild(addTarget);
266
+
267
+ })
268
+
269
+
270
+
271
+ const deleteButton = document.createElement("button");
272
+
273
+ deleteButton.innerText = "削除";
274
+
275
+ deleteButton.addEventListener("click", ()=>{
276
+
277
+ // 押された削除ボタンの親divを未完了リストから削除
278
+
279
+ deleteFromCompleteButton(deleteButton.parentNode);
280
+
281
+
282
+
283
+ })
284
+
285
+
286
+
287
+ div.appendChild(completeButton);
288
+
289
+ div.appendChild(deleteButton);
290
+
291
+
292
+
293
+
294
+
295
+ };
296
+
297
+
298
+
299
+ // 未完了リストから指定の要素を削除
300
+
301
+
302
+
303
+ const deleteFromCompleteButton = (target)=>{
304
+
305
+ document.getElementById("imcomplete-list").removeChild(target);
306
+
307
+ }
308
+
309
+
310
+
311
+ document.getElementById("add-button").addEventListener("click", () => onClickAdd());
312
+
313
+
314
+
315
+
316
+
317
+
318
+
319
+
320
+
321
+ function getStrage() {
322
+
323
+ let list = localStorage.getItem("TodoList");
324
+
325
+ if (list === null) {
326
+
327
+ return [];
328
+
329
+ } else {
330
+
331
+ return JSON.parse(list);
332
+
333
+ }
334
+
335
+ }
336
+
337
+
338
+
339
+ function addStrage(item) {
340
+
341
+ let list = getStrage();
342
+
343
+ list.push(item);
344
+
345
+ setLocal(list);
346
+
347
+ }
348
+
349
+
350
+
351
+ function deleteStrage(index) {
352
+
353
+ let list = getStrage();
354
+
355
+ list.splice(index, 1);
356
+
357
+ localStorage.setItem("TodoList", JSON.stringify(list));
358
+
359
+ }
360
+
361
+
362
+
363
+ function setStrage(list) {
364
+
365
+ localStorage.setItem("TodoList", JSON.stringify(list));
366
+
367
+ }
368
+
369
+
370
+
371
+ ```
372
+
373
+
374
+
105
375
  ### 試したこと
106
376
 
107
377