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

質問編集履歴

5

完成

2019/04/18 07:21

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -108,4 +108,103 @@
108
108
  →obj.dayなどが上から引っ張られずにデータが入ってこなかった
109
109
 
110
110
  途中でリロードしてHTMLを取り込んだ後の処理を入れた
111
- →現状。一瞬だけtableが現れて消える
111
+ →現状。一瞬だけtableが現れて消える
112
+
113
+ 追記:できました!
114
+ ```jQuery
115
+ /* ローカルストレージ設定 */
116
+ var storage = localStorage;
117
+ let datalist_st = storage.getItem('datalist');
118
+ /* 入力ボタンを押すとデータを取得する */
119
+ $(function() {
120
+ const day = $('#day').val();
121
+ const money = $('#money').val();
122
+
123
+ displayList();
124
+ $('#f1').on('submit', function(e) {
125
+
126
+ e.preventDefault()
127
+
128
+ if ($('#day').val() === '') {
129
+ alert('日付を入力してください');
130
+ return false;
131
+ }
132
+ if ($('#money').val() === '') {
133
+ alert('金額を入力してください');
134
+ return false;
135
+ }
136
+
137
+
138
+ if (datalist_st != null) {
139
+ datalist = JSON.parse(datalist_st);
140
+ } else {
141
+ datalist = [];
142
+ }
143
+
144
+ const row_data = {
145
+ day: $('#day').val(),
146
+ money: $('#money').val()
147
+ };
148
+
149
+ datalist.push(row_data);
150
+
151
+ storage.setItem('datalist', JSON.stringify(datalist));
152
+ $("#day,#money").val("");
153
+ window.location.reload();
154
+ });
155
+ });
156
+
157
+ function displayList() {
158
+ if (datalist_st != null) {
159
+ datalist = JSON.parse(datalist_st);
160
+ } else {
161
+ datalist = [];
162
+ }
163
+ for (i = 0; i < datalist.length; i++) {
164
+ let record_tr = $('<tr></tr>', {
165
+ id: 'row_' + i
166
+ });
167
+ const td_id = $('<td></td>', {
168
+ hidden: 'hidden',
169
+ html: i
170
+ });
171
+ const td_day = $('<td></td>', {
172
+ html: datalist[i].day
173
+ });
174
+ const td_money = $('<td></td>', {
175
+ html: datalist[i].money
176
+ });
177
+ const remove_btn = $('<button></button>', {
178
+ html: '-',
179
+ type: 'button',
180
+ class: 'remove'
181
+ });
182
+ remove_btn.attr('data-id', i);
183
+ const td_remove = $('<td></td>', {
184
+ html: remove_btn
185
+ });
186
+ record_tr.append(td_id);
187
+ record_tr.append(td_day);
188
+ record_tr.append(td_money);
189
+ record_tr.append(td_remove);
190
+ record_tr.append(td_remove);
191
+ $('#list').append(record_tr);
192
+ }
193
+ /* 選択した列のデータを削除 */
194
+ $("#list").click(function() {
195
+ let storageItem = JSON.parse(storage.getItem('datalist'));
196
+ const id = 'data-id';
197
+ const index = storageItem.findIndex((v) => v.id === id);
198
+ const removeid = storageItem.splice(index, 1);
199
+ storage.setItem('datalist', JSON.stringify(storageItem));
200
+ window.location.reload();
201
+ });
202
+ }
203
+
204
+
205
+ /* 全てのデータを削除 */
206
+ $("#clear").click(function() {
207
+ storage.clear();
208
+ window.location.reload();
209
+ });
210
+ ```

4

HTML修正

2019/04/18 07:21

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -52,51 +52,53 @@
52
52
 
53
53
  ```
54
54
  ```HTML
55
- <div class="main">
55
+ <div class="main">
56
+ <form id="f3">
56
- <div class="jougen">
57
+ <div class="jougen">
57
- <p>課金上限</p>
58
+ <p>課金上限</p>
59
+ <p>
60
+ <output id="rslt" form="settei" class="jogen">0</output>円
61
+ </p>
62
+ </div>
63
+ </form>
64
+ <div class="honbun1">
65
+ <p>入力</p>
66
+ <div style="display:inline-flex">
67
+ <form id="f1">
68
+ <div class="moji">
69
+ <input type="date" name="day" id="day" class="day">
70
+ <input type="number" class="money" name="money" id="money">円
71
+ <input type="submit" value="入力" class="kettei1">
72
+ </div>
73
+ </form>
74
+ </div>
75
+ </div>
76
+ <div class="nokori">
77
+ <p>今月の残り課金額</p>
58
78
  <p>
59
- <output id="rslt" form="settei" class="jogen">0</output>円
79
+ <output name="result" >0</output>円
60
80
  </p>
61
81
  </div>
82
+ <br>
83
+ <form id="f2">
84
+ <p>履歴</p>
85
+ <div class="rireki">
86
+ <table id="t1" border="1">
87
+ <thead>
88
+ <tr>
89
+ <th hidden>id</th>
90
+ <th width="30%">日付</th>
91
+ <th width="50%">金額</th>
92
+ <th width="20%">削除</th>
93
+ </tr>
94
+ </thead>
95
+ <tbody id="list"></tbody>
96
+ </table>
97
+ </div>
62
- </form>
98
+ </form>
63
- <div class="honbun1">
64
- <p>入力</p>
65
- <div style="display:inline-flex">
66
- <form id="f1">
67
- <div class="moji">
68
- <input type="date" name="day" id="day" class="day">
69
- <input type="number" class="money" name="money" id="money">円
70
- <input type="submit" value="入力" class="kettei1">
99
+ <input type="button" value="クリア" id="clear">
71
- </div>
72
- </form>
73
- </div>
74
100
  </div>
75
- <div class="nokori">
76
- <p>今月の残り課金額</p>
77
- <p>
78
- <output name="result" >0</output>円
79
- </p>
80
- </div>
81
- <br>
82
- <form id="f2">
83
- <p>履歴</p>
84
- <div class="rireki">
85
- <table id="t1" border="1">
86
- <thead>
87
- <tr>
88
- <th hidden>id</th>
89
- <th width="30%">日付</th>
90
- <th width="50%">金額</th>
91
- <th width="20%">削除</th>
92
- </tr>
93
- </thead>
94
- <tbody id="list"></tbody>
95
- </table>
96
- </div>
97
- </form>
101
+ </body>
98
- <input type="button" value="クリア" id="clear">
99
- </div>
100
102
  ```
101
103
 
102
104
 

3

HTML修正

2019/04/16 02:19

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -52,45 +52,51 @@
52
52
 
53
53
  ```
54
54
  ```HTML
55
+ <div class="main">
56
+ <div class="jougen">
55
- <p>課金上限</p>
57
+ <p>課金上限</p>
58
+ <p>
56
- <p><output id="rslt" form="settei" class="jogen">0</output>円</p>
59
+ <output id="rslt" form="settei" class="jogen">0</output>円
60
+ </p>
57
- </div>
61
+ </div>
58
62
  </form>
59
- <div class="honbun1">
63
+ <div class="honbun1">
60
- <p>入力</p>
64
+ <p>入力</p>
61
65
  <div style="display:inline-flex">
62
- <form id="f1">
66
+ <form id="f1">
63
- <div class="moji">
67
+ <div class="moji">
64
- <input type="date" name="day" id="day" class="day">
68
+ <input type="date" name="day" id="day" class="day">
65
- <input type="number" class="money" name="money" id="money">
69
+ <input type="number" class="money" name="money" id="money">円
66
- <input type="submit" value="入力" class="kettei1"></div>
70
+ <input type="submit" value="入力" class="kettei1">
71
+ </div>
67
72
  </form>
68
- </div>
73
+ </div>
69
74
  </div>
70
75
  <div class="nokori">
71
76
  <p>今月の残り課金額</p>
77
+ <p>
72
- <p><output name="result" >0</output>円</p>
78
+ <output name="result" >0</output>円
79
+ </p>
73
80
  </div>
74
81
  <br>
75
- <form id="f2">
82
+ <form id="f2">
76
- <p>履歴</p>
83
+ <p>履歴</p>
77
- <div class="rireki">
84
+ <div class="rireki">
78
- <table id="t1" border="1">
85
+ <table id="t1" border="1">
79
- <thead>
86
+ <thead>
80
- <tr>
87
+ <tr>
81
- <th hidden>id</th>
88
+ <th hidden>id</th>
82
- <th width="30%">日付</th>
89
+ <th width="30%">日付</th>
83
- <th width="50%">金額</th>
90
+ <th width="50%">金額</th>
84
- <th width="20%">削除</th>
91
+ <th width="20%">削除</th>
85
- </tr>
92
+ </tr>
86
- </thead>
93
+ </thead>
87
- <tbody id="list">
94
+ <tbody id="list"></tbody>
88
- </tbody>
89
- </table>
95
+ </table>
90
- </div>
96
+ </div>
91
- </form>
97
+ </form>
92
98
  <input type="button" value="クリア" id="clear">
93
- </div>
99
+ </div>
94
100
  ```
95
101
 
96
102
 

2

HTMLコードの追加

2019/04/16 01:57

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -51,7 +51,49 @@
51
51
  });
52
52
 
53
53
  ```
54
+ ```HTML
55
+ <p>課金上限</p>
56
+ <p><output id="rslt" form="settei" class="jogen">0</output>円</p>
57
+ </div>
58
+ </form>
59
+ <div class="honbun1">
60
+ <p>入力</p>
61
+ <div style="display:inline-flex">
62
+ <form id="f1">
63
+ <div class="moji">
64
+ <input type="date" name="day" id="day" class="day">
65
+ <input type="number" class="money" name="money" id="money"> 円
66
+ <input type="submit" value="入力" class="kettei1"></div>
67
+ </form>
68
+ </div>
69
+ </div>
70
+ <div class="nokori">
71
+ <p>今月の残り課金額</p>
72
+ <p><output name="result" >0</output>円</p>
73
+ </div>
74
+ <br>
75
+ <form id="f2">
76
+ <p>履歴</p>
77
+ <div class="rireki">
78
+ <table id="t1" border="1">
79
+ <thead>
80
+ <tr>
81
+ <th hidden>id</th>
82
+ <th width="30%">日付</th>
83
+ <th width="50%">金額</th>
84
+ <th width="20%">削除</th>
85
+ </tr>
86
+ </thead>
87
+ <tbody id="list">
88
+ </tbody>
89
+ </table>
90
+ </div>
91
+ </form>
92
+ <input type="button" value="クリア" id="clear">
93
+ </div>
94
+ ```
54
95
 
96
+
55
97
  ### 試したこと
56
98
 
57
99
  データを全部消す前で一回切って新しく$(document).ready( function()で始めた

1

コードの修正

2019/04/16 01:33

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -15,51 +15,41 @@
15
15
  ```jquery
16
16
  /* ローカルストレージ設定 */
17
17
  var storage = localStorage;
18
-
18
+
19
19
  /* 履歴を保存 */
20
- $('#f1').on('submit', function (e){
20
+ $('#f1').on('submit', function (e) {
21
21
  e.preventDefault()
22
22
  var obj = {
23
- day: $("#day").val(),
23
+ day: $("#day").val(),
24
- money: $("#money").val()
24
+ money: $("#money").val()
25
25
  }
26
-
27
- var i = Math.floor( Math.random() * 101 );
26
+ var i = Math.floor(Math.random() * 101);
28
- storage.setItem("datalist" + i ,JSON.stringify(obj));
27
+ storage.setItem("datalist" + i, JSON.stringify(obj));
29
-
30
-
31
-
28
+
32
- /* 履歴を取得 */
29
+ /* 履歴を取得 */
33
- var str = storage.getItem("datalist" + i);
30
+ var str = storage.getItem("datalist" + i);
34
- var obj = JSON.parse(str);
31
+ var obj = JSON.parse(str);
35
-
36
-
37
32
  window.location.reload();
33
+ $(document).ready(function () {
34
+
35
+ /* いったんデータを全部消す */
36
+ $("#list").empty();
37
+
38
+ /* 全ての要素を取得する */
39
+ for (i = 0; i < storage.length; i++) {
40
+ var key = storage.key(i)
41
+ storage.getItem("datalist" + i)
42
+ }
43
+
44
+ /* 登録されているkey, valueを順に取得して表示 */
45
+ var v_id = "datalist" + i;
46
+ var v_day = obj.day;
47
+ var v_money = obj.money;
48
+ if (v_day !== "" && v_money !== "") $('#t1 tbody').after($('<tr>').append($('<td>').html(v_day)).append($('<td>').text(v_money)).append($('<td>').html('<button class="remove">-</button>')));
49
+ $("#day,#money").val("");
50
+ });
51
+ });
38
52
 
39
- $(document).ready( function(){
40
-
41
-
42
- /* いったんデータを全部消す */
43
- $("#list").empty();
44
-
45
- /* 全ての要素を取得する */
46
- for( i = 0; i < storage.length; i++ ){
47
- var key = storage.key(i)
48
- storage.getItem("datalist" + i)
49
- }
50
-
51
- /* 登録されているkey, valueを順に取得して表示 */
52
- var v_id = "datalist" + i;
53
- var v_day = obj.day;
54
- var v_money = obj.money;
55
- if (v_day !== "" && v_money !== "")
56
- $('#t1 tbody').after($('<tr>').append($('<td>').html(v_day)).append($('<td>').text(v_money)).append($('<td>').html('<button class="remove">-</button>')));
57
- $("#day,#money").val("");
58
-
59
- });
60
- });
61
-
62
-
63
53
  ```
64
54
 
65
55
  ### 試したこと