• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ローカルストレージがうまくいかない)

ローカルストレージを使った変数の保持方法

このQ&Aのポイント
  • ローカルストレージを使用して変数内のテキストを保存し、リロードしても削除されないようにする方法について教えてください。
  • 変数を指定してもダメで、テキストしか保存できないと聞きました。本当にそうなのでしょうか?
  • 上記のコードでは変数の中身が保持されません。変数の中身を保持するにはどうすればいいですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Proof4
  • ベストアンサー率78% (151/192)
回答No.1

onePriceResultの変数定義で「あああ」が正しくクオーテーションで囲まれていないのが問題ではないでしょうか。 var onePriceResult = document.getElementById('onePriceResult').innerHTML = 'あああ'; localStorage.setItem("onePrice", onePriceResult); で保存できます。 できますが、基本的に変数定義で=を二つ使うことは実用上しないことだと思います。

okweb12345
質問者

お礼

サンプルなのでそうなっていますが実際は下記のように問題なくできています。 document.getElementById('onePriceResult').innerHTML = 変数名+ 'です。'; するとローカルストレージは文字列しか保存できないというわけではなく変数も保存できるのですね。 ちゃんと保存できているのになぜかリロードすると初期化されて、DOM生成した、要素とその中に入れたテキストがなくなってしまいます。 localStorage.getItem("onePrice"); とすればリロード時に保存したhtmlとその中身のテキストが読み込まれて表記され、リロード前の状態が再現されるのではないでしょうか? もしかして var onePriceResult = document.getElementById('onePriceResult').innerHTML = 'あああ'; のように一つの式に二つイコールを使ってはいけない仕様なのでしょうか? ここがうまくいっていないのですか?

okweb12345
質問者

補足

やっとできましたありがとうございます。

その他の回答 (2)

  • Proof4
  • ベストアンサー率78% (151/192)
回答No.3

No.2のお礼コメントに対して >localStorage.getItem("onePrice");を変数に入れて、 >その後変数をinnerHTMLに入れてやれば始めに保存した変数の中身が表記されると考えてよいでしょうか? その通りです

okweb12345
質問者

お礼

すると変数だけでは表記するpタグがないので、 これもcreateelementで作ってやる必要がありそうですね

  • Proof4
  • ベストアンサー率78% (151/192)
回答No.2

No.1の補足に対して回答します。 >するとローカルストレージは文字列しか保存できないというわけではなく変数も保存できるのですね。 変数を保存するというよりも変数をキーとして「変数の値」を保存するといったほうが正しいです。 >localStorage.getItem("onePrice"); >とすればリロード時に保存したhtmlとその中身のテキストが読み込まれて表記され、リロード前の状態が再現されるのではないでしょうか? localStorage.getItem("onePrice");ではローカルストレージから値をただ読み込むだけですのでそれだけで何かを表示してくれることはありません。 何らかのDOM要素を指定するなりして表示させなければなりません。 >一つの式に二つイコールを使ってはいけない仕様なのでしょうか? 実用上使わないというのは語弊がありました。

okweb12345
質問者

お礼

localStorage.getItem("onePrice");を変数に入れて、 その後変数をinnerHTMLに入れてやれば始めに保存した変数の中身が表記されると考えてよいでしょうか?

関連するQ&A