質問編集履歴

2

DBからの削除はできました。

2020/04/15 08:24

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -58,7 +58,7 @@
58
58
 
59
59
 
60
60
 
61
- !!実装したいのはここ!!
61
+ !!実装したいのはここ!!→実装できました
62
62
 
63
63
  // Realtime Database の books から書籍を削除する
64
64
 
@@ -66,109 +66,255 @@
66
66
 
67
67
  // TODO: books から該当の書籍データを削除
68
68
 
69
+ if(window.confirm('削除してよろしいですか?')){
70
+
69
- return firebase
71
+ return firebase
72
+
73
+ .database()
74
+
75
+ .ref(`books/${bookId}`)
76
+
77
+ .remove();
78
+
79
+ // キャンセル時の処理
80
+
81
+  } else {
82
+
83
+   return;
84
+
85
+  }
86
+
87
+ };
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+ // 書籍の表示用のdiv(jQueryオブジェクト)を作って返す
96
+
97
+ const createBookDiv = (bookId, bookData) => {
98
+
99
+ // HTML内のテンプレートからコピーを作成する
100
+
101
+ const $divTag = $('#book-template > .book-item').clone();
102
+
103
+
104
+
105
+ // 書籍タイトルを表示する
106
+
107
+ $divTag.find('.book-item__title').text(bookData.bookTitle);
108
+
109
+
110
+
111
+ // 書籍の表紙画像をダウンロードして表示する
112
+
113
+ downloadBookImage(bookData.bookImageLocation).then((url) => {
114
+
115
+ displayBookImage($divTag, url);
116
+
117
+ });
118
+
119
+
120
+
121
+ // id属性をセット
122
+
123
+ $divTag.attr('id', `book-id-${bookId}`);
124
+
125
+
126
+
127
+ // 削除ボタンのイベントハンドラを登録
128
+
129
+ const $deleteButton = $divTag.find('.book-item__delete');
130
+
131
+ $deleteButton.on('click', () => {
132
+
133
+ deleteBook(bookId);
134
+
135
+ });
136
+
137
+ return $divTag;
138
+
139
+ };
140
+
141
+
142
+
143
+ // 書籍一覧画面内の書籍データをクリア
144
+
145
+ const resetBookshelfView = () => {
146
+
147
+ $('#book-list').empty();
148
+
149
+ };
150
+
151
+
152
+
153
+ // 書籍一覧画面に書籍データを表示する
154
+
155
+ const addBook = (bookId, bookData) => {
156
+
157
+ const $divTag = createBookDiv(bookId, bookData);
158
+
159
+ $divTag.appendTo('#book-list');
160
+
161
+ };
162
+
163
+
164
+
165
+ // 書籍一覧画面の初期化、イベントハンドラ登録処理
166
+
167
+ const loadBookshelfView = () => {
168
+
169
+ resetBookshelfView();
170
+
171
+
172
+
173
+ // 書籍データを取得
174
+
175
+ const booksRef = firebase
70
176
 
71
177
  .database()
72
178
 
73
179
  .ref('books')
74
180
 
75
- .removed(bookId.bookTitle);
181
+ .orderByChild('createdAt');
76
-
182
+
183
+
184
+
77
- };
185
+ // 過去に登録したイベントハンドラを削除
186
+
78
-
187
+ booksRef.off('child_removed');
188
+
79
-
189
+ booksRef.off('child_added');
80
-
81
-
82
-
83
-
84
-
190
+
191
+
192
+
85
- // 書籍表示用のdiv(jQueryオブジェク作って返す
193
+ // books child_removedイベンハンドラ登録
194
+
86
-
195
+ // (データベースから書籍が削除されたときの処理)
196
+
197
+ booksRef.on('child_removed', (bookSnapshot) => {
198
+
199
+ const bookId = bookSnapshot.key;
200
+
87
- const createBookDiv = (bookId, bookData) => {
201
+ const $book = $(`#book-id-${bookId}`);
202
+
203
+
204
+
88
-
205
+ !!!実装したい!!!
206
+
89
- // HTML内のテンプレートからコピーを作成する
207
+ // TODO: 書籍一覧画面から該当の書籍デ削除する
90
-
91
- const $divTag = $('#book-template > .book-item').clone();
208
+
92
-
93
-
94
-
95
- // 書籍タイトルを表示する
209
+
96
-
97
- $divTag.find('.book-item__title').text(bookData.bookTitle);
98
-
99
-
100
-
101
- // 書籍の表紙画像をダウンロードして表示する
102
-
103
- downloadBookImage(bookData.bookImageLocation).then((url) => {
104
-
105
- displayBookImage($divTag, url);
106
210
 
107
211
  });
108
212
 
109
213
 
110
214
 
111
- // id属性をセット
112
-
113
- $divTag.attr('id', `book-id-${bookId}`);
114
-
115
-
116
-
117
- // 削除ボタンのイベントハンドラを登録
215
+ // books child_addedイベントハンドラを登録
118
-
216
+
119
- const $deleteButton = $divTag.find('.book-item__delete');
217
+ // (データベースに書籍が追加保存されたときの処理)
120
-
218
+
121
- $deleteButton.on('click', () => {
219
+ booksRef.on('child_added', (bookSnapshot) => {
220
+
122
-
221
+ const bookId = bookSnapshot.key;
222
+
223
+ const bookData = bookSnapshot.val();
224
+
225
+
226
+
227
+ // 書籍一覧画面に書籍データを表示する
228
+
123
- deleteBook(bookId);
229
+ addBook(bookId, bookData);
124
230
 
125
231
  });
126
232
 
127
- return $divTag;
128
-
129
- };
130
-
131
-
132
-
133
- // 書籍一覧画面内の書籍データをクリア
134
-
135
- const resetBookshelfView = () => {
136
-
137
- $('#book-list').empty();
138
-
139
- };
140
-
141
-
142
-
143
- // 書籍一覧画面に書籍データ表示する
144
-
145
- const addBook = (bookId, bookData) => {
146
-
147
- const $divTag = createBookDiv(bookId, bookData);
148
-
149
- $divTag.appendTo('#book-list');
150
-
151
- };
152
-
153
-
154
-
155
- // 書籍一覧画面の初期化、イベントハンドラ登録処理
156
-
157
- const loadBookshelfView = () => {
158
-
159
- resetBookshelfView();
160
-
161
-
162
-
163
- // 書籍データを取得
164
-
165
- const booksRef = firebase
166
-
167
- .database()
168
-
169
- .ref('books')
170
-
171
- .orderByChild('createdAt');
233
+ };
234
+
235
+
236
+
237
+ /**
238
+
239
+ * ----------------------
240
+
241
+ * すべての画面共通で使う関数
242
+
243
+ * ----------------------
244
+
245
+ */
246
+
247
+
248
+
249
+ // ビュー(画面変更する
250
+
251
+ const showView = (id) => {
252
+
253
+ $('.view').hide();
254
+
255
+ $(`#${id}`).fadeIn();
256
+
257
+
258
+
259
+ if (id === 'bookshelf') {
260
+
261
+ loadBookshelfView();
262
+
263
+ }
264
+
265
+ };
266
+
267
+
268
+
269
+ /**
270
+
271
+ * -------------------------
272
+
273
+ * ログイン・ログアウト関連の関数
274
+
275
+ * -------------------------
276
+
277
+ */
278
+
279
+
280
+
281
+ // ログインフォームを初期状態に戻す
282
+
283
+ const resetLoginForm = () => {
284
+
285
+ $('#login__help').hide();
286
+
287
+ $('#login__submit-button')
288
+
289
+ .prop('disabled', false)
290
+
291
+ .text('ログイン');
292
+
293
+ };
294
+
295
+
296
+
297
+ // ログインした直後に呼ばれる
298
+
299
+ const onLogin = () => {
300
+
301
+ console.log('ログイン完了');
302
+
303
+
304
+
305
+ // 書籍一覧画面を表示
306
+
307
+ showView('bookshelf');
308
+
309
+ };
310
+
311
+
312
+
313
+ // ログアウトした直後に呼ばれる
314
+
315
+ const onLogout = () => {
316
+
317
+ const booksRef = firebase.database().ref('books');
172
318
 
173
319
 
174
320
 
@@ -180,45 +326,7 @@
180
326
 
181
327
 
182
328
 
183
- // books の child_removedイベントハンドラを登録
184
-
185
- // (データベースから書籍が削除されたときの処理)
186
-
187
- booksRef.on('child_removed', (bookSnapshot) => {
188
-
189
- const bookId = bookSnapshot.key;
190
-
191
- const $book = $(`#book-id-${bookId}`);
192
-
193
-
194
-
195
- !!!ここも実装したい!!!
196
-
197
- // TODO: 書籍一覧画面から該当の書籍データを削除する
198
-
199
-
200
-
201
- });
202
-
203
-
204
-
205
- // books の child_addedイベントハンドラを登録
206
-
207
- // (データベースに書籍が追加保存されたときの処理)
208
-
209
- booksRef.on('child_added', (bookSnapshot) => {
210
-
211
- const bookId = bookSnapshot.key;
212
-
213
- const bookData = bookSnapshot.val();
214
-
215
-
216
-
217
- // 書籍一覧画面に書籍データを表示する
218
-
219
- addBook(bookId, bookData);
329
+ showView('login');
220
-
221
- });
222
330
 
223
331
  };
224
332
 
@@ -226,33 +334,125 @@
226
334
 
227
335
  /**
228
336
 
229
- * ----------------------
337
+ * ------------------
230
-
338
+
231
- * すべて画面共通で使う関数
339
+ * イベントハンドラ登録
232
-
340
+
233
- * ----------------------
341
+ * ------------------
234
342
 
235
343
  */
236
344
 
237
345
 
238
346
 
239
- // ビュー(画面)変更する
347
+ // ログイン状態の変化監視する
240
-
348
+
241
- const showView = (id) => {
349
+ firebase.auth().onAuthStateChanged((user) => {
350
+
242
-
351
+ // ログイン状態が変化した
352
+
353
+ if (user) {
354
+
243
- $('.view').hide();
355
+ // ログイン済
244
-
245
- $(`#${id}`).fadeIn();
356
+
246
-
247
-
248
-
249
- if (id === 'bookshelf') {
250
-
251
- loadBookshelfView();
357
+ onLogin();
358
+
359
+ } else {
360
+
361
+ // 未ログイン
362
+
363
+ onLogout();
252
364
 
253
365
  }
254
366
 
255
- };
367
+ });
368
+
369
+
370
+
371
+ // ログインフォームが送信されたらログインする
372
+
373
+ $('#login-form').on('submit', (e) => {
374
+
375
+ e.preventDefault();
376
+
377
+
378
+
379
+ const $loginButton = $('#login__submit-button');
380
+
381
+ $loginButton.text('送信中…');
382
+
383
+
384
+
385
+ const email = $('#login-email').val();
386
+
387
+ const password = $('#login-password').val();
388
+
389
+
390
+
391
+ // ログインを試みる
392
+
393
+ firebase
394
+
395
+ .auth()
396
+
397
+ .signInWithEmailAndPassword(email, password)
398
+
399
+ .then(() => {
400
+
401
+ // ログインに成功したときの処理
402
+
403
+ console.log('ログインしました。');
404
+
405
+
406
+
407
+ // ログインフォームを初期状態に戻す
408
+
409
+ resetLoginForm();
410
+
411
+ })
412
+
413
+ .catch((error) => {
414
+
415
+ // ログインに失敗したときの処理
416
+
417
+ console.error('ログインエラー', error);
418
+
419
+
420
+
421
+ $('#login__help')
422
+
423
+ .text('ログインに失敗しました。')
424
+
425
+ .show();
426
+
427
+
428
+
429
+ // ログインボタンを元に戻す
430
+
431
+ $loginButton.text('ログイン');
432
+
433
+ });
434
+
435
+ });
436
+
437
+
438
+
439
+ // ログアウトボタンが押されたらログアウトする
440
+
441
+ $('.logout-button').on('click', () => {
442
+
443
+ firebase
444
+
445
+ .auth()
446
+
447
+ .signOut()
448
+
449
+ .catch((error) => {
450
+
451
+ console.error('ログアウトに失敗:', error);
452
+
453
+ });
454
+
455
+ });
256
456
 
257
457
 
258
458
 
@@ -260,7 +460,7 @@
260
460
 
261
461
  * -------------------------
262
462
 
263
- * ログイン・ログアウト関連の関数
463
+ * 書籍情報追加モーダル関連の処理
264
464
 
265
465
  * -------------------------
266
466
 
@@ -268,89 +468,43 @@
268
468
 
269
469
 
270
470
 
271
- // ログインフォを初期状態に戻す
471
+ // 書籍の登録モダルを初期状態に戻す
272
-
472
+
273
- const resetLoginForm = () => {
473
+ const resetAddBookModal = () => {
274
-
474
+
275
- $('#login__help').hide();
475
+ $('#book-form')[0].reset();
476
+
276
-
477
+ $('#add-book-image-label').text('');
478
+
277
- $('#login__submit-button')
479
+ $('#submit_add_book')
278
480
 
279
481
  .prop('disabled', false)
280
482
 
281
- .text('ログイン');
483
+ .text('保存する');
282
-
484
+
283
- };
485
+ };
284
-
285
-
286
-
287
- // ログインした直後に呼ばれる
486
+
288
-
289
- const onLogin = () => {
487
+
290
-
291
- console.log('ログイン完了');
488
+
292
-
293
-
294
-
295
- // 書籍一覧を表示
489
+ // 選択した表紙像の、ファイル名を表示する
296
-
490
+
297
- showView('bookshelf');
491
+ $('#add-book-image').on('change', (e) => {
298
-
299
- };
492
+
300
-
301
-
302
-
303
- // ログアウトした直後に呼ばれる
304
-
305
- const onLogout = () => {
493
+ const input = e.target;
306
-
494
+
307
- const booksRef = firebase.database().ref('books');
495
+ const $label = $('#add-book-image-label');
308
-
309
-
310
-
311
- // 過去に登録したイベントハンドラを削除
496
+
312
-
313
- booksRef.off('child_removed');
314
-
315
- booksRef.off('child_added');
497
+ const file = input.files[0];
316
-
317
-
318
-
319
- showView('login');
498
+
320
-
321
- };
499
+
322
-
323
-
324
-
325
- /**
500
+
326
-
327
- * ------------------
328
-
329
- * イベントハンドラの登録
330
-
331
- * ------------------
332
-
333
- */
334
-
335
-
336
-
337
- // ログイン状態の変化を監視する
338
-
339
- firebase.auth().onAuthStateChanged((user) => {
340
-
341
- // ログイン状態が変化した
342
-
343
- if (user) {
501
+ if (file != null) {
344
-
502
+
345
- // ログイン済
503
+ $label.text(file.name);
346
-
347
- onLogin();
348
504
 
349
505
  } else {
350
506
 
351
- // 未ログ
507
+ $label.text('ファルを選択');
352
-
353
- onLogout();
354
508
 
355
509
  }
356
510
 
@@ -358,67 +512,111 @@
358
512
 
359
513
 
360
514
 
361
- // ログインフォームが送信されたらログインする
515
+ // 書籍の登録処理
362
-
516
+
363
- $('#login-form').on('submit', (e) => {
517
+ $('#book-form').on('submit', (e) => {
364
518
 
365
519
  e.preventDefault();
366
520
 
367
521
 
368
522
 
523
+ // 書籍の登録ボタンを押せないようにする
524
+
369
- const $loginButton = $('#login__submit-button');
525
+ $('#submit_add_book')
526
+
370
-
527
+ .prop('disabled', true)
528
+
371
- $loginButton.text('送信中…');
529
+ .text('送信中…');
530
+
531
+
532
+
372
-
533
+ // 書籍タイトル
373
-
374
-
534
+
375
- const email = $('#login-email').val();
535
+ const bookTitle = $('#add-book-title').val();
376
-
536
+
537
+
538
+
377
- const password = $('#login-password').val();
539
+ const $bookImage = $('#add-book-image');
540
+
378
-
541
+ const { files } = $bookImage[0];
542
+
543
+
544
+
379
-
545
+ if (files.length === 0) {
546
+
380
-
547
+ // ファイルが選択されていないなら何もしない
548
+
549
+ return;
550
+
551
+ }
552
+
553
+
554
+
555
+ const file = files[0]; // 表紙画像ファイル
556
+
557
+ const filename = file.name; // 画像ファイル名
558
+
559
+ const bookImageLocation = `book-images/${filename}`; // 画像ファイルのアップロード先
560
+
561
+
562
+
381
- // ログイン試み
563
+ // 書籍データ保存す
382
564
 
383
565
  firebase
384
566
 
385
- .auth()
567
+ .storage()
568
+
386
-
569
+ .ref(bookImageLocation)
570
+
387
- .signInWithEmailAndPassword(email, password)
571
+ .put(file) // Storageへファイルアップロードを実行
388
572
 
389
573
  .then(() => {
390
574
 
391
- // ログインに成功したときの処理
575
+ // Storageへのアップードに成功したら、Realtime Databaseに書籍データを保存する
576
+
392
-
577
+ const bookData = {
578
+
579
+ bookTitle,
580
+
581
+ bookImageLocation,
582
+
583
+ createdAt: firebase.database.ServerValue.TIMESTAMP,
584
+
585
+ };
586
+
587
+ return firebase
588
+
589
+ .database()
590
+
393
- console.log('ログインしました。');
591
+ .ref('books')
394
-
395
-
396
-
397
- // ログインフォームを初期状態に戻す
592
+
398
-
399
- resetLoginForm();
593
+ .push(bookData);
400
594
 
401
595
  })
402
596
 
597
+ .then(() => {
598
+
599
+ // 書籍一覧画面の書籍の登録モーダルを閉じて、初期状態に戻す
600
+
601
+ $('#add-book-modal').modal('hide');
602
+
603
+ resetAddBookModal();
604
+
605
+ })
606
+
403
607
  .catch((error) => {
404
608
 
405
- // ログインに失敗したときの処理
609
+ // 失敗したとき
406
-
610
+
407
- console.error('ログインエラー', error);
611
+ console.error('エラー', error);
612
+
408
-
613
+ resetAddBookModal();
409
-
410
-
614
+
411
- $('#login__help')
615
+ $('#add-book__help')
412
-
616
+
413
- .text('ログインに失敗しました。')
617
+ .text('保存できせんでした。')
414
-
618
+
415
- .show();
619
+ .fadeIn();
416
-
417
-
418
-
419
- // ログインボタンを元に戻す
420
-
421
- $loginButton.text('ログイン');
422
620
 
423
621
  });
424
622
 
@@ -426,199 +624,11 @@
426
624
 
427
625
 
428
626
 
429
- // ログアウトボタンが押されたらログアウトする
430
-
431
- $('.logout-button').on('click', () => {
432
-
433
- firebase
434
-
435
- .auth()
436
-
437
- .signOut()
438
-
439
- .catch((error) => {
440
-
441
- console.error('ログアウトに失敗:', error);
442
-
443
- });
444
-
445
- });
446
-
447
-
448
-
449
- /**
450
-
451
- * -------------------------
452
-
453
- * 書籍情報追加モーダル関連の処理
454
-
455
- * -------------------------
456
-
457
- */
458
-
459
-
460
-
461
- // 書籍の登録モーダルを初期状態に戻す
462
-
463
- const resetAddBookModal = () => {
464
-
465
- $('#book-form')[0].reset();
466
-
467
- $('#add-book-image-label').text('');
468
-
469
- $('#submit_add_book')
470
-
471
- .prop('disabled', false)
472
-
473
- .text('保存する');
474
-
475
- };
476
-
477
-
478
-
479
- // 選択した表紙画像の、ファイル名を表示する
480
-
481
- $('#add-book-image').on('change', (e) => {
482
-
483
- const input = e.target;
484
-
485
- const $label = $('#add-book-image-label');
486
-
487
- const file = input.files[0];
488
-
489
-
490
-
491
- if (file != null) {
492
-
493
- $label.text(file.name);
494
-
495
- } else {
496
-
497
- $label.text('ファイルを選択');
498
-
499
- }
500
-
501
- });
502
-
503
-
504
-
505
- // 書籍の登録処理
506
-
507
- $('#book-form').on('submit', (e) => {
508
-
509
- e.preventDefault();
510
-
511
-
512
-
513
- // 書籍の登録ボタンを押せないようにする
514
-
515
- $('#submit_add_book')
516
-
517
- .prop('disabled', true)
518
-
519
- .text('送信中…');
520
-
521
-
522
-
523
- // 書籍タイトル
524
-
525
- const bookTitle = $('#add-book-title').val();
526
-
527
-
528
-
529
- const $bookImage = $('#add-book-image');
530
-
531
- const { files } = $bookImage[0];
532
-
533
-
534
-
535
- if (files.length === 0) {
536
-
537
- // ファイルが選択されていないなら何もしない
538
-
539
- return;
540
-
541
- }
542
-
543
-
544
-
545
- const file = files[0]; // 表紙画像ファイル
546
-
547
- const filename = file.name; // 画像ファイル名
548
-
549
- const bookImageLocation = `book-images/${filename}`; // 画像ファイルのアップロード先
550
-
551
-
552
-
553
- // 書籍データを保存する
554
-
555
- firebase
556
-
557
- .storage()
558
-
559
- .ref(bookImageLocation)
560
-
561
- .put(file) // Storageへファイルアップロードを実行
562
-
563
- .then(() => {
564
-
565
- // Storageへのアップロードに成功したら、Realtime Databaseに書籍データを保存する
566
-
567
- const bookData = {
568
-
569
- bookTitle,
570
-
571
- bookImageLocation,
572
-
573
- createdAt: firebase.database.ServerValue.TIMESTAMP,
574
-
575
- };
576
-
577
- return firebase
578
-
579
- .database()
580
-
581
- .ref('books')
582
-
583
- .push(bookData);
584
-
585
- })
586
-
587
- .then(() => {
588
-
589
- // 書籍一覧画面の書籍の登録モーダルを閉じて、初期状態に戻す
590
-
591
- $('#add-book-modal').modal('hide');
592
-
593
- resetAddBookModal();
594
-
595
- })
596
-
597
- .catch((error) => {
598
-
599
- // 失敗したとき
600
-
601
- console.error('エラー', error);
602
-
603
- resetAddBookModal();
604
-
605
- $('#add-book__help')
606
-
607
- .text('保存できませんでした。')
608
-
609
- .fadeIn();
610
-
611
- });
612
-
613
- });
614
-
615
-
616
-
617
627
  ```
618
628
 
619
- やりたいことは、削除ボタンが押されたら、そのデータのみをDBから削除してページを更新したいのですが、上記のようにremove(bookId.bookTitle)として削除ボタンを押すと、なぜかテーブル内の全データが削除されます。(bookIdだけではエラーが出てしまい、削除されませんでした)
629
+ やりたいことは、削除ボタンが押されたら、そのデータのみをDBから削除してページを更新したいのですが、上記のようにremove(bookId.bookTitle)として削除ボタンを押すと、なぜかテーブル内の全データが削除されます。(bookIdだけではエラーが出てしまい、削除されませんでした)→できました。
620
-
630
+
621
- console.logで確認しましたが、bookIdは取得できています。
631
+ console.logで確認しましたが、bookIdは取得できています。→できました。
622
632
 
623
633
 
624
634
 
@@ -626,4 +636,4 @@
626
636
 
627
637
 
628
638
 
629
- 削除ボタンが押されたデータのみ(bookImageLocation,bookTitle,createdAt)を削除する方法と、削除後にページを更新する、またはhtmlから該当データを削除する方法について教えて頂けないでしょうか。よろしくお願いします。
639
+ 削除後にページを更新する、またはhtmlから該当データを削除する方法について教えて頂けないでしょうか。よろしくお願いします。

1

細かな修正を行いました

2020/04/15 08:24

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -622,8 +622,8 @@
622
622
 
623
623
 
624
624
 
625
- また、が更新されないため自分でページ更新をしないと反映されません。ファイルを保存するときは、保存後にページがリロードされるのですが、その処理がどこに当たるのかが分かりません。
625
+ また、削除後に該当のデタを表示している一覧からもデータを削除して再表示させたいのです、削除ボタン押下後に更新されないため自分でページ更新をしないと反映されません。ファイルを保存するときは、保存後にページがリロードされる?のですが、その処理がどこに当たるのかが分かりません。
626
-
627
-
628
-
626
+
627
+
628
+
629
- 削除ボタンが押されたデータのみ(bookImageLocation,bookTitle,createdAt)を削除する方法と、削除後にページを更新する方法について教えて頂けないでしょうか。よろしくお願いします。
629
+ 削除ボタンが押されたデータのみ(bookImageLocation,bookTitle,createdAt)を削除する方法と、削除後にページを更新する、またはhtmlから該当データを削除する方法について教えて頂けないでしょうか。よろしくお願いします。