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

質問編集履歴

6

追記:jQueryの修正

2019/04/11 10:18

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -11,8 +11,6 @@
11
11
  jQueryには保存する方法だけ記載してそのまま手が動かなくなりました。
12
12
  2. 現状のコードでは増えた行全部が消えてしまいます…
13
13
 
14
- 毎日質問していて本当に申し訳ないのですが、一日考えても全くわかりません…
15
- 申し訳ありませんが回答頂けますと幸いです。
16
14
 
17
15
  【参考コード】
18
16
  ```
@@ -312,4 +310,89 @@
312
310
  })
313
311
 
314
312
 
313
+ ```
314
+
315
+ 4/11 追記
316
+ 思い切ってjQueryを書き直してみました。
317
+ 選択した行だけ削除はできるようになったのですが、1回しか削除されないところと、ページを更新した時に履歴が表示されず困っています。
318
+ 何か手立てはありますでしょうか…?
319
+
320
+ ```
321
+ // This is a JavaScript file
322
+ $(function () {
323
+
324
+ /* ここにjQueryのコードを記述 */
325
+
326
+ /* ローカルストレージ設定 */
327
+ var storage = localStorage;
328
+
329
+
330
+
331
+ $('#f1').on('submit', function (e){
332
+ e.preventDefault()
333
+
334
+ /* 履歴を保存 */
335
+ var key = $("#day").val();
336
+ var value = $("#money").val();
337
+
338
+ /* key,valueに値が入っているかチェック */
339
+ if (key && value) {
340
+ storage.setItem(key, value);
341
+ }
342
+
343
+ /* いったん中身を空にする */
344
+ $("#list").empty();
345
+
346
+ /* localStorageすべての情報の取得 */
347
+ for (var i=0; i < storage.length; i++){
348
+ var _key = storage.key(i);
349
+
350
+
351
+ /* 登録されているkey, valueを順に取得して表示 */
352
+ var tr = $("<tr></tr>");
353
+ var td1 = $("<td></td>");
354
+ var td2 = $("<td></td>");
355
+ $("#list").append(tr);
356
+ tr.append(td1).append(td2).append($('<td>').html('<input type="button" value="-" id="remove">'))
357
+ td1.html(_key);
358
+ td2.html(storage.getItem(_key));
359
+ }
360
+ });
361
+
362
+ /* 選択した列のデータを削除 */
363
+ $(document).on( "click" , "#remove" , function(){
364
+ var key = $("#day").val();
365
+ storage.removeItem(key);
366
+ key = "";
367
+ window.location.reload();
368
+ });
369
+
370
+ /* 全てのデータを削除 */
371
+ $("#clear").click(function() {
372
+ storage.clear();
373
+ window.location.reload();
374
+ });
375
+
376
+ /* 課金上限 保存 */
377
+ $("#kettei").click(function() {
378
+ storage.setItem("jogen", $("#kakin").val());
379
+
380
+ /* 課金上限 表示 */
381
+ var value = storage.getItem("jogen");
382
+ $("#rslt").text(value);
383
+ });
384
+
385
+ /* リロードした時のに課金上限・履歴を表示*/
386
+ $(document).ready( function(){
387
+ var value = storage.getItem("jogen");
388
+ $("#rslt").text(value);
389
+ var key = $("#day").val();
390
+ var value = $("#money").val();
391
+ storage.getItem(key,value)
392
+ });
393
+
394
+
395
+
396
+ /* 終了タグ */
397
+ });
315
398
  ```

5

追記

2019/04/11 10:18

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -276,4 +276,40 @@
276
276
  td3.html('<button class="remove">-</button>');
277
277
  })
278
278
 
279
+ ```
280
+ 4/10追記
281
+ localstrageにデータが保存されるようになった、テーブルもページ更新したら出るようになったのですが、テーブルの中にデータがはいりません。
282
+ ここのコードが間違っているだろう、というのはわかるのですが色々やってみても解消しません。
283
+ どうしたら良いでしょうか…?
284
+ ちなみにlocalstrageの名前はstrageにしています。
285
+ ```
286
+ /* 履歴を保存 */
287
+ $('#f1').on('submit', function (){
288
+ var obj = {
289
+ data1: $("#day").val(),
290
+ data2: $("#money").val()
291
+ }
292
+ storage.setItem("datalist",JSON.stringify(obj));
293
+
294
+ /* 履歴を取得 */
295
+ var str = storage.getItem("datalist");
296
+ var obj = JSON.parse(str);
297
+ })
298
+
299
+
300
+ /* 履歴を表示 */
301
+ $(document).ready( function(){
302
+ /* 登録されているkey, valueを順に取得して表示 */
303
+ var tr = $("<tr></tr>");
304
+ var td1 = $("<td></td>");
305
+ var td2 = $("<td></td>");
306
+ var td3 = $("<td></td>");
307
+ $("#list").after(tr);
308
+ tr.append(td1).append(td2).append(td3);
309
+ $("#td1").strage.getItem('data1');
310
+ $("#td2").strage.getItem('data2');
311
+ $("#td3").html('<button class="remove">-</button>')
312
+ })
313
+
314
+
279
315
  ```

4

追記

2019/04/10 07:34

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -243,4 +243,37 @@
243
243
  $("#t1 tbody").text(value);
244
244
  });
245
245
 
246
+ ```
247
+
248
+ 追記:履歴部分のコードを自分なりに書いてみたのですが、何かが間違っているらしく全く動きません…
249
+ 間違っている箇所があればご指摘いただけたら幸いです…。
250
+
251
+ ```
252
+ /* 履歴を保存 */
253
+ $('#f1').on('submit', function (){
254
+ var datalist = {
255
+ data1: $("#day").val(),
256
+ data2: $("#money").val()
257
+ }
258
+ storage.setItem("datalist",JSON.stringify(datalist));
259
+
260
+ /* 履歴を取得 */
261
+ var str = localStorage.getItem("datalist");
262
+ var obj = JSON.parse(str);
263
+ })
264
+
265
+ /* 履歴を表示 */
266
+ $(document).ready( function(){
267
+ // 登録されているkey, valueを順に取得して表示
268
+ var tr = $("<tr></tr>");
269
+ var td1 = $("<td></td>");
270
+ var td2 = $("<td></td>");
271
+ var td3 = $("<td></td>");
272
+ $("list").after(tr);
273
+ tr.append(td1).append(td2);
274
+ td1.html(ls.getItem(.data1));
275
+ td2.html(ls.getItem(.data2));
276
+ td3.html('<button class="remove">-</button>');
277
+ })
278
+
246
279
  ```

3

追記

2019/04/09 05:43

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -218,4 +218,29 @@
218
218
  /* 終了タグ */
219
219
  });
220
220
 
221
+ ```
222
+ 追記:JSONに変更して保存するところまでうまくいったと思うのですが…
223
+ 保存したデータを表示すると`{"data1":"#day","data2":"#money"}`と表示されました。
224
+ これをデータ形式で表示する方法はありますでしょうか…?
225
+
226
+ ```jQuery
227
+ /* 履歴を保存 */
228
+ $('#f1').on('submit', function (){
229
+ var datalist = {
230
+ data1: "#day",
231
+ data2: "#money"
232
+ }
233
+ storage.setItem("datalist",JSON.stringify(datalist));
234
+
235
+ /* 履歴を取得 */
236
+ var str = localStorage.getItem("datalist");
237
+ var obj = JSON.parse(str);
238
+ })
239
+
240
+ /* 履歴を表示 */
241
+ $(document).ready( function(){
242
+ var value = storage.getItem("datalist");
243
+ $("#t1 tbody").text(value);
244
+ });
245
+
221
246
  ```

2

編集

2019/04/08 02:57

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -104,7 +104,7 @@
104
104
  ```
105
105
 
106
106
  追記:簡単な「課金上限」を保存するところからやってみました。
107
- localstrageには保存されるのですがvalueがundefinedと表示されます。
107
+ localstrageには保存されるのですがページを更新すると課金上限の金額が0円に戻ってしいます。
108
108
  なぜでしょうか…?
109
109
 
110
110
  ```HTML
@@ -182,7 +182,7 @@
182
182
  </html>
183
183
  ```
184
184
  ```jQuery
185
- // This is a JavaScript file
185
+ /// This is a JavaScript file
186
186
  $(function () {
187
187
 
188
188
  /* ここにjQueryのコードを記述 */
@@ -210,12 +210,12 @@
210
210
  storage.setItem("jogen", $("#kakin").val());
211
211
 
212
212
  /* 課金上限 表示 */
213
- var value = localStorage.getItem("jogen");
213
+ var value = storage.getItem("jogen");
214
- $("#rslt").number(value);
214
+ $("#rslt").text(value);
215
215
  });
216
216
 
217
217
 
218
-
219
218
  /* 終了タグ */
220
219
  });
220
+
221
221
  ```

1

追記

2019/04/04 05:46

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -101,4 +101,121 @@
101
101
 
102
102
 
103
103
  });
104
+ ```
105
+
106
+ 追記:簡単な「課金上限」を保存するところからやってみました。
107
+ localstrageには保存されるのですがvalueが「undefined」と表示されます。
108
+ なぜでしょうか…?
109
+
110
+ ```HTML
111
+ <!DOCTYPE HTML>
112
+ <html>
113
+ <head>
114
+ <meta charset="utf-8">
115
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
116
+ <meta http-equiv="Content-Security-Policy" content="default-src * data: gap: content: https://ssl.gstatic.com; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
117
+ <script src="components/loader.js"></script>
118
+ <link rel="stylesheet" href="css/main.css">
119
+ <script src="js/jquery-3.3.1.min.js"></script>
120
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
121
+ <script type="text/javascript" src="js/main.js"></script>
122
+
123
+ <title>メイン</title>
124
+
125
+ </head>
126
+ <body>
127
+ <header>
128
+ <div id="nav-drawer">
129
+ <input id="nav-input" type="checkbox" class="nav-unshown">
130
+ <label id="nav-open" for="nav-input"><span>menu</span></label>
131
+ <label class="nav-unshown" id="nav-close" for="nav-input"></label>
132
+ <div id="nav-content">
133
+ <form id="settei" oninput="rslt.value = Number(settei.value);">
134
+ <p>上限設定</p>
135
+ <p><input type="number" id="kakin">円</p>
136
+ </form>
137
+ <input type="button" value="決定" class="ketei" onclick="nav-close" id="kettei">
138
+ </div>
139
+ </div>
140
+ </header>
141
+ <form id="f3">
142
+ <div class="main">
143
+ <div class="jougen">
144
+ <p>課金上限</p>
145
+ <p><output id="rslt" form="settei" class="jogen">0</output>円</p>
146
+ </div>
147
+ </form>
148
+ <div class="honbun1">
149
+ <p>入力</p>
150
+ <div style="display:inline-flex">
151
+ <form id="f1">
152
+ <div class="moji">
153
+ <input type="date" name="day" id="day" class="day">
154
+ <input type="number" class="money" name="money" id="money"> 円
155
+ <input type="submit" value="入力" class="kettei1"></div>
156
+ </form>
157
+ </div>
158
+ </div>
159
+ <div class="nokori">
160
+ <p>今月の残り課金額</p>
161
+ <p><output name="result" >0</output>円</p>
162
+ </div>
163
+ <br>
164
+ <form id="f2">
165
+ <p>履歴</p>
166
+ <div class="rireki">
167
+ <table id="t1" border="1">
168
+ <thead>
169
+ <tr>
170
+ <th width="30%">日付</th>
171
+ <th width="50%">金額</th>
172
+ <th width="20%">削除</th>
173
+ </tr>
174
+ </thead>
175
+ <tbody>
176
+ </tbody>
177
+ </table>
178
+ </div>
179
+ </form>
180
+ <input type="reset" value="クリア">
181
+ </div>
182
+ </html>
183
+ ```
184
+ ```jQuery
185
+ // This is a JavaScript file
186
+ $(function () {
187
+
188
+ /* ここにjQueryのコードを記述 */
189
+ /* 履歴表示 */
190
+ $('#f1').on('submit', function (e) {
191
+ e.preventDefault();
192
+ var v_day = $("#day").val();
193
+ var v_money = $("#money").val();
194
+ if (v_day !== "" && v_money !== "") {
195
+ $('#t1 tbody').after($('<tr>').append($('<td>').text(v_day)).append($('<td>').text(v_money)).append($('<td>').html('<button class="remove">-</button>')));
196
+ $("#day,#money").val("");}
197
+ });
198
+
199
+ /* 削除ボタン作動 */
200
+ $('#f2').on('remove' , function (e) {
201
+ e.preventDefault();
202
+ $(this).parents(tr).remove();
203
+ })
204
+
205
+ /* セッションストレージ設定 */
206
+ var storage = localStorage;
207
+
208
+ /* 課金上限 保存 */
209
+ $("#kettei").click(function() {
210
+ storage.setItem("jogen", $("#kakin").val());
211
+
212
+ /* 課金上限 表示 */
213
+ var value = localStorage.getItem("jogen");
214
+ $("#rslt").number(value);
215
+ });
216
+
217
+
218
+
219
+ /* 終了タグ */
220
+ });
104
221
  ```