あなたは、ページ全体の状態をローカルストレージに保存したいと思うように思えます。
もし私がそれをやろうとすれば、おそらく物事をはっきりと整理しておくために状態を必要とする要素ごとに異なるローカル記憶項目を作成するでしょう。
ですから、ローカルストレージの文字列にあなたの状態を変換し、このようなオブジェクトでは、あなたの状態を保持
後にバック状態にそれを解析する方法が
state = {
'menu1': 'open',
'menu2': 'closed',
'textinput1': {'text': '' /*put text here*/, 'highlighted': '57-159'} //characters 57-159 are highlighted
}
//or if you want things to be as simple as possible
state = {
'menu1': 'open',
'menu2': 'closed',
'textinput1-text': '' /*put text here*/,
'textinput1-highlighted: '57-159'}
}
//and then reading through the state
for (item in state) {
if (state.hasOwnProperty(item)) {
//convert the state into a single string for each item
//then set the local storage item
localStorage.setItem(item,stringstate)
}
}
を仕事ができるだけで警戒する必要がありますしかし、あなたが私が 'textinput1'(実際にそれ自身のオブジェクトを保持しているところ)を使って、上記のことをしたならば。これを行うには、あなたのコードを手直しするためにあなたは、このような単一の状態では動作しない場合は
'textarea1-text' and 'textarea1-highlighted'
すでにそれは難しいかもしれ:あなたは、おそらくこのような独自のローカルストレージの項目は、それらの内部の各項目を与えることになるでしょうあなたは
それらのもののすべてを保持したり、あなたのWebページに複数のコンポーネントを持っている場合は、ローカルストレージを変換する各コンポーネント
の状態を持つことができれば、それはそれが簡単にローカルストレージに新しいものを追加することになりますアイテムを状態に戻す:
for (item in state) {
if (state.hasOwnProperty(item){
state.item = localStorage.getItem(item)
}
ローカルストレージに状態を保存するときは、いつでもすべての状態を持っているので簡単です ウェブページ上の何かに変更が加えられたときはいつでも状態の更新を行うことができます。ユーザーが保存しようとしている場合のみ重要です。ボタンをクリックするとすぐにすべての状態を更新し、すぐにローカルストレージに保存することができます。
これはほんとうに役立ちますあなたが探していた方法
編集:
ごめんなさい国家のことはとても混乱していたので、私が何を意味しているか説明することはおそらく貧弱でした。そのため、ボタンをローカルストレージに保存して変更を保存したい場合があります。あなたが他の人の回答から得たトグルのアイデアは、「オン」または「オフ」の位置にしかないのでメニューが開いたり閉じたりしている場合に便利ですが、テキストを保存したいハイライトされている場合は、確かにそれ以上の情報を保存する必要があります。
あなたはメニューやテキスト要素のような要素をすべて持っていると言いました。 1つのオブジェクトを持つことができます(名前は何でも構いません)。今はそれを状態と呼んでみましょう。
ので
var state = {}
オブジェクトを使用すると、様々な要素のために異なる状態のすべてを保存することができ、単一の場所であること。メニューが開いているか閉じているかを簡単に確認できます。
メニューをトグル(またはイベントをトリガーしている)しているjqueryイベントが消えた場合は、状態オブジェクトに何が起こったかを保存してください。 ここにその概念を示す大まかな例があります。何かメニューがあり、jquery show()
とhide()
関数を使用して開いたり閉じたりすることができます。さて、あなたはコードが状態ですべての項目を介して実行し、ローカルストレージ
に保存するローカルストレージに変更
saveToLocalStorage() {
for (item in state) {
if (state.hasOwnProperty(item)) {
//make sure only to save the state[item] if it is a string or can doesn't lose meaning if converted to a string
localStorage.setItem(item, state[item])
}
}
}
を保存するたびに呼び出され、いくつかの機能を持っているとしましょう
var state = {
menu1: false
}
//A function you call whenever the menu button is clicked
function menuToggle() {
if (state.menu1) {
$('#menu1').hide()
} else {
$('#menu1').show()
}
//now update the state change
state.menu1 = !state.menu1
}
あなたは、ローカルストレージ
loadFromLocalStorage() {
var storedItem
//loop through all of the properties in state
for (item in state) {
if (state.hasOwnProperty(item)) {
storedItem = localStorage.getItem(item)
if (storedItem !== null) {
//the state now holds whatever was in local storage
state[item] = storedItem
}
}
}
}
Sorrを確認することができますページをロードする際に
私が事を十分に簡素化しなかったならば、もう一度。あなたが尋ねた質問では、ローカルストレージに保存するすべてのものをチェックする何らかの方法が必要なので、すべての情報を1つのオブジェクトに入れておくと、すでに1つの場所にあるので、すべて保存することは簡単です。
私はその正規表現の質問を手助けしてあなたのプロフィールをクリックし、私もこれを手伝ってくれると思います。ページがどのように見え、どのように修正されているかを実際に見ていなくても、この質問に答えるのは難しいです。 REST APIのようなサーバー側のサービスを使用してデータをデータベースに保存しないという特別な理由はありますか?ローカルストレージが必要ですか? –
大きな写真は、最終的にサーバーにリンクされるサイトのプロトタイプに取り組んでいるということです(プロフェッショナルなサービスは私のために行いますが、サーバー側のコードはわかりません)。実証的な目的のために、私は、あなたの場所を保存する機能がどのように機能するかを人々に示すことができるボタンを持っていることを期待していました。それが難しいのであれば、サーバ側でやるまで待たなければならないかもしれません。 – Cleo
@Cleoどのような変更によっても、JS変数を意味しますか?または、他の何か? JS変数の場合、解決策は簡単で理解しやすいから... –