- ベストアンサー
ローカルストレージを使った変数の保持方法
- ローカルストレージを使用して変数内のテキストを保存し、リロードしても削除されないようにする方法について教えてください。
- 変数を指定してもダメで、テキストしか保存できないと聞きました。本当にそうなのでしょうか?
- 上記のコードでは変数の中身が保持されません。変数の中身を保持するにはどうすればいいですか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
onePriceResultの変数定義で「あああ」が正しくクオーテーションで囲まれていないのが問題ではないでしょうか。 var onePriceResult = document.getElementById('onePriceResult').innerHTML = 'あああ'; localStorage.setItem("onePrice", onePriceResult); で保存できます。 できますが、基本的に変数定義で=を二つ使うことは実用上しないことだと思います。
その他の回答 (2)
- Proof4
- ベストアンサー率78% (151/192)
No.2のお礼コメントに対して >localStorage.getItem("onePrice");を変数に入れて、 >その後変数をinnerHTMLに入れてやれば始めに保存した変数の中身が表記されると考えてよいでしょうか? その通りです
お礼
すると変数だけでは表記するpタグがないので、 これもcreateelementで作ってやる必要がありそうですね
- Proof4
- ベストアンサー率78% (151/192)
No.1の補足に対して回答します。 >するとローカルストレージは文字列しか保存できないというわけではなく変数も保存できるのですね。 変数を保存するというよりも変数をキーとして「変数の値」を保存するといったほうが正しいです。 >localStorage.getItem("onePrice"); >とすればリロード時に保存したhtmlとその中身のテキストが読み込まれて表記され、リロード前の状態が再現されるのではないでしょうか? localStorage.getItem("onePrice");ではローカルストレージから値をただ読み込むだけですのでそれだけで何かを表示してくれることはありません。 何らかのDOM要素を指定するなりして表示させなければなりません。 >一つの式に二つイコールを使ってはいけない仕様なのでしょうか? 実用上使わないというのは語弊がありました。
お礼
localStorage.getItem("onePrice");を変数に入れて、 その後変数をinnerHTMLに入れてやれば始めに保存した変数の中身が表記されると考えてよいでしょうか?
お礼
サンプルなのでそうなっていますが実際は下記のように問題なくできています。 document.getElementById('onePriceResult').innerHTML = 変数名+ 'です。'; するとローカルストレージは文字列しか保存できないというわけではなく変数も保存できるのですね。 ちゃんと保存できているのになぜかリロードすると初期化されて、DOM生成した、要素とその中に入れたテキストがなくなってしまいます。 localStorage.getItem("onePrice"); とすればリロード時に保存したhtmlとその中身のテキストが読み込まれて表記され、リロード前の状態が再現されるのではないでしょうか? もしかして var onePriceResult = document.getElementById('onePriceResult').innerHTML = 'あああ'; のように一つの式に二つイコールを使ってはいけない仕様なのでしょうか? ここがうまくいっていないのですか?
補足
やっとできましたありがとうございます。