質問編集履歴
6
追記:jQueryの修正
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
追記
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
追記
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
追記
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
編集
title
CHANGED
File without changes
|
body
CHANGED
@@ -104,7 +104,7 @@
|
|
104
104
|
```
|
105
105
|
|
106
106
|
追記:簡単な「課金上限」を保存するところからやってみました。
|
107
|
-
localstrageには保存されるのですが
|
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 =
|
213
|
+
var value = storage.getItem("jogen");
|
214
|
-
$("#rslt").
|
214
|
+
$("#rslt").text(value);
|
215
215
|
});
|
216
216
|
|
217
217
|
|
218
|
-
|
219
218
|
/* 終了タグ */
|
220
219
|
});
|
220
|
+
|
221
221
|
```
|
1
追記
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
|
```
|