localStorageを取得した後、関数が機能しなくなります

私は2つのリスト、fruit-shelfとfruit-basketでlocalStorageを使用しています。

果物の棚から果物をクリックすると、果物のバスケットに追加されます。ページを更新すると、まだそこにあります。そのため、すべてが正しく記憶されます。

問題は、フルーツを1つ追加してからページを更新すると、フルーツを追加できなくなり、プログラムが完全に機能しなくなることです。

動作する[ローカルストレージのクリア]ボタンを追加しました。それをクリックしてページを更新すると、フルーツを再度追加できます。ただし、フルーツを1つ追加してページを更新するとすぐに、フルーツバスケットにアイテムを追加することはできません。

問題に名前を付ける方法がわからないので、解決策を探すのは難しいです(私は試しました!)。

誰かが私を正しい方向に向けることができますか?:-)

フィドル(localStorageのため、ここではSOスニペットを使用できませんでした):https//jsfiddle.net/nrv269hc/7/

JS:

(function() {

  var btnClearStorage = document.querySelector('.btn-delete-all');
  var fruitShelf = document.querySelector('.fruit-shelf');
  var fruitShelfItems = document.querySelectorAll('.fruit-shelf li');
  var fruitBasket = document.querySelector('.fruit-basket');

  // Store current state of fruitSheflf & fruitBasket
  function storestate() {
    localStorage.fruitShelf = fruitShelf.innerHTML;
    localStorage.currentFruitBasket = fruitBasket.innerHTML;
  };

  function retrievestate() {

    // Retrieve fruits left from shelf
    if (localStorage.fruitShelf) {
      fruitShelf.innerHTML = localStorage.fruitShelf;
    }
    // Retrieve stored fruits 
    if (localStorage.currentFruitBasket) {
      fruitBasket.innerHTML = localStorage.currentFruitBasket;
    }
  };

  retrievestate();

  for (var i = 0; i < fruitShelfItems.length; i++) {

    fruitShelfItems[i].addEventListener('click', function(event) {

      fruitBasket.appendChild(this);
      storestate();
    });

  }

  // Clear Local Storage
  btnClearStorage.addEventListener('click', function() {

    localStorage.clear(fruitShelf);
    localStorage.clear(fruitBasket);

  });

})();
バドル

HTMLはretrievestateの後に更新されるため、fruitShelfItemsを更新する必要があります。

更新されたJsFiddleを見てください

(function() {

  var btnClearStorage = document.querySelector('.btn-delete-all');
  var fruitShelf = document.querySelector('.fruit-shelf');
  var fruitShelfItems = document.querySelectorAll('.fruit-shelf li');
  var fruitBasket = document.querySelector('.fruit-basket');

  // Store current state of fruitSheflf & fruitBasket
  function storestate() {
    localStorage.fruitShelf = fruitShelf.innerHTML;
    localStorage.currentFruitBasket = fruitBasket.innerHTML;
  };

  function retrievestate() {

    // Retrieve fruits left from shelf
    if (localStorage.fruitShelf) {
      fruitShelf.innerHTML = localStorage.fruitShelf;
    }
    // Retrieve fruit basket
    if (localStorage.currentFruitBasket) {
      fruitBasket.innerHTML = localStorage.currentFruitBasket;
    }
    // you need to update the fruitShelfItems as the HTML is update after retrievestate
    fruitShelfItems = document.querySelectorAll('.fruit-shelf li');
  };

  retrievestate();

  for (var i = 0; i < fruitShelfItems.length; i++) {

    fruitShelfItems[i].addEventListener('click', function(event) {

      fruitBasket.appendChild(this);
      storestate();
    });

  }

  // Clear Local Storage
  btnClearStorage.addEventListener('click', function() {

    localStorage.clear(fruitShelf);
    localStorage.clear(fruitBasket);

  });

})();

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

divを追加した後、jquery関数が機能しなくなります

分類Dev

Parse ServerをHerokuに移行した後、クラウドコード関数が機能しなくなります

分類Dev

JSONからデータを取得した後、ViewHolderが機能しなくなりました

分類Dev

アプリを送信した後、iAdsが機能しなくなりました

分類Dev

New-RandomPassword関数が突然機能しなくなりました

分類Dev

更新後、InkscapeのLaTeXが機能しなくなりました

分類Dev

いくつかの$ _POST変数の存在を確認した後、phpフォームが意図したとおりに機能しなくなりますか?

分類Dev

関数が機能していません 'name.exeが機能しなくなりました'

分類Dev

フルカレンダー| ビューを変更した後、Jqueryホバー関数が機能しなくなりました

分類Dev

クラスとスプライトの作成方法を更新した後、動き回る関数が機能しなくなりました

分類Dev

Reactクラスから関数コンポーネントに変換した後、検索機能が機能しなくなりました

分類Dev

引数としてchar *を渡すと、関数が機能しなくなります

分類Dev

サーバーを移行した後、HTMLWebサイトが期待どおりに機能しなくなります

分類Dev

Linuxジョブを勘当して切断した後、discord.pyon_messageが機能しなくなります

分類Dev

jQuery .html()の更新時に、他の関数が機能しなくなります

分類Dev

setTimeOut関数でこれを使用すると機能しなくなりました

分類Dev

電話が機能しなくなった後、AVAudioPlayerを再開します

分類Dev

Googleフォームのコントロールがフォーカスを取得した後、webviewloadUrlが機能しなくなります

分類Dev

アプリを公開した後、Google DriveApiが機能しなくなります

分類Dev

QTableWidgetにデータを入力した後、Pythonが機能しなくなりますか?

分類Dev

ダイアログからhtmlを追加した後、JqueryUIDateTimePickerボタンが機能しなくなります

分類Dev

divを更新した後、ポップオーバーが機能しなくなりますか?

分類Dev

MySQLコネクタを更新した後、暗黙的な変換が機能しなくなりました

分類Dev

$演算子とフィルターを使用すると、Rshiny出力関数が機能しなくなります

分類Dev

onEdit関数を使用すると、コードが機能しなくなりますか?

分類Dev

パラメータを変更すると、ExcelDNA関数が機能しなくなります

分類Dev

2番目のパラメーターを追加すると、Javascript関数が機能しなくなります

分類Dev

リンクリストノードを削除すると、C ++関数が機能しなくなります

分類Dev

新しいブロックを追加した後、不和ボットが機能しなくなりました

Related 関連記事

  1. 1

    divを追加した後、jquery関数が機能しなくなります

  2. 2

    Parse ServerをHerokuに移行した後、クラウドコード関数が機能しなくなります

  3. 3

    JSONからデータを取得した後、ViewHolderが機能しなくなりました

  4. 4

    アプリを送信した後、iAdsが機能しなくなりました

  5. 5

    New-RandomPassword関数が突然機能しなくなりました

  6. 6

    更新後、InkscapeのLaTeXが機能しなくなりました

  7. 7

    いくつかの$ _POST変数の存在を確認した後、phpフォームが意図したとおりに機能しなくなりますか?

  8. 8

    関数が機能していません 'name.exeが機能しなくなりました'

  9. 9

    フルカレンダー| ビューを変更した後、Jqueryホバー関数が機能しなくなりました

  10. 10

    クラスとスプライトの作成方法を更新した後、動き回る関数が機能しなくなりました

  11. 11

    Reactクラスから関数コンポーネントに変換した後、検索機能が機能しなくなりました

  12. 12

    引数としてchar *を渡すと、関数が機能しなくなります

  13. 13

    サーバーを移行した後、HTMLWebサイトが期待どおりに機能しなくなります

  14. 14

    Linuxジョブを勘当して切断した後、discord.pyon_messageが機能しなくなります

  15. 15

    jQuery .html()の更新時に、他の関数が機能しなくなります

  16. 16

    setTimeOut関数でこれを使用すると機能しなくなりました

  17. 17

    電話が機能しなくなった後、AVAudioPlayerを再開します

  18. 18

    Googleフォームのコントロールがフォーカスを取得した後、webviewloadUrlが機能しなくなります

  19. 19

    アプリを公開した後、Google DriveApiが機能しなくなります

  20. 20

    QTableWidgetにデータを入力した後、Pythonが機能しなくなりますか?

  21. 21

    ダイアログからhtmlを追加した後、JqueryUIDateTimePickerボタンが機能しなくなります

  22. 22

    divを更新した後、ポップオーバーが機能しなくなりますか?

  23. 23

    MySQLコネクタを更新した後、暗黙的な変換が機能しなくなりました

  24. 24

    $演算子とフィルターを使用すると、Rshiny出力関数が機能しなくなります

  25. 25

    onEdit関数を使用すると、コードが機能しなくなりますか?

  26. 26

    パラメータを変更すると、ExcelDNA関数が機能しなくなります

  27. 27

    2番目のパラメーターを追加すると、Javascript関数が機能しなくなります

  28. 28

    リンクリストノードを削除すると、C ++関数が機能しなくなります

  29. 29

    新しいブロックを追加した後、不和ボットが機能しなくなりました

ホットタグ

アーカイブ