回答編集履歴

1

削除について追記

2016/08/11 13:19

投稿

flied_onion
flied_onion

スコア2604

test CHANGED
@@ -16,6 +16,10 @@
16
16
 
17
17
  var d = JSON.parse(localStorage.getItem(i));
18
18
 
19
+ $("<td></td>").text(d.data1).appendTo("#" + i);
20
+
21
+ $("<td></td>").text(d.data2).appendTo("#" + i);
22
+
19
23
  ```
20
24
 
21
25
 
@@ -24,4 +28,72 @@
24
28
 
25
29
 
26
30
 
31
+ ---
32
+
33
+
34
+
27
- 削除はまだ試してません。
35
+ 削除に関して追記
36
+
37
+
38
+
39
+ 削除に関して、数値のキーで登録しているのに、削除したキーであっても構わず iで使っているので、データが取れなくてエラーになっています。
40
+
41
+ for文の回数はlengthでとっているので正確だけれど、getItemに指定する値が不正になるということです。
42
+
43
+
44
+
45
+ 例えば最初に3件登録すると
46
+
47
+
48
+
49
+ ```
50
+
51
+ 1 {"data1":"2016-12-21T08:01","data2":"なんとなく","data3":"red","data4":"2016/8/11"}
52
+
53
+ 2 {"data1":"2016-12-21T08:01","data2":"なんとなく","data3":"red","data4":"2016/8/11"}
54
+
55
+ 3 {"data1":"2016-12-21T08:01","data2":"なんとなく","data3":"red","data4":"2016/8/11"}
56
+
57
+ ```
58
+
59
+
60
+
61
+ こんな感じで登録されます(左の数字がkey)。ところが、2を削除したとき
62
+
63
+ ```
64
+
65
+ 1 {"data1":"2016-12-21T08:01","data2":"なんとなく","data3":"red","data4":"2016/8/11"}
66
+
67
+ 3 {"data1":"2016-12-21T08:01","data2":"なんとなく","data3":"red","data4":"2016/8/11"}
68
+
69
+ ```
70
+
71
+ です。
72
+
73
+
74
+
75
+ しかしfor文で i は、1,2 となるので、 getItem(2) で何もとれていないのに、
76
+
77
+ 後続の処理でその中身にアクセスしようとするのでエラーとなります。
78
+
79
+
80
+
81
+ なので、localStorage.key を利用して
82
+
83
+ ```
84
+
85
+ var d = JSON.parse(localStorage.getItem(localStorage.key(i-1)));
86
+
87
+ ```
88
+
89
+
90
+
91
+ とすればよいと思います。
92
+
93
+
94
+
95
+
96
+
97
+ あと余談ですが、コンソールにエラーは出てました。
98
+
99
+