2016-10-03 50 views
0

私がしたいのは、前のステータスを上書きせずにユーザーが「送信」をクリックしたときにチェックボックスのステータスをlocalstorageに保存することです。したがって、localstorageは "true、false、false、true ..."などの値を持つ可能性があります。現時点では、新しいセッションでフォームを送信すると、localstorageはチェックボックスのステータスを上書きします。Localstorage:複数のセッションのチェックボックスステータスを上書きせずに保存

JS:

document.addEventListener("deviceready",onDeviceReady,false); 

function onDeviceReady() { 
     document.getElementById("xbutton").addEventListener("click",savecheck,false); } 
function savecheck(){ 
    var checkb = document.getElementById("MedA"); 
    localStorage.setItem("MedA", checkb.checked); 
} 

HTML:

<form> 
     <div id='medA'> 
      <input type="checkbox" id="MedA" name="Med" value="A">Medication A 
     </div> 
<input id="xbutton" type="button" onClick="savecheck()" value="Submit"> 
</form> 
+0

このように、配列 – epascarello

+2

の複製をhttp://stackoverflow.com/questions/19715948/localstorage-troublesで使用していますか? –

答えて

0

は一つのアプローチです:

function savecheck() { 
    var checkb = document.getElementById("MedA"); 
    var medAHistory = JSON.parse(localStorage.getItem('MedA') || "[]"); 
    medAHistory.push(checkb.checked); 
    localStorage.setItem("MedA", JSON.stringify(medAHistory)); 
} 

覚えておくべき事はlocalStorageをのみ、文字列値を格納できるということです。 つまり、localStorageに格納するときに、オブジェクトや配列を文字列にシリアル化してから、localStorageから読み込むときに逆シリアル化(解析)する必要があります。

メモ:以前に "MedA"アイテムをローカルストレージに保存していた場合は、(構文解析された)表現を単純な値から配列に変更する場合は削除する必要があります。

+0

ありがとうございます。私はなぜそれが毎回二重のステータスを与えるのだろうかと疑問に思っていますか?ボタンをオフにしてサブミットをクリックすると、サブミットを1回だけクリックしても値は[false、false]になります。 – michelle9090

+0

このコードは、複数のチェックボックスステータスを保存することで機能しますが、各フォーム送信の重複ステータスを保存し続けるだけです。 – michelle9090

0

は、あなたがそのような何かを行うことができます。

function savecheck() { 
    var data = []; 
    data[0] = document.getElementById("MedA").checked; 
    localStorage.setItem("MedA", JSON.stringify(data)); 
} 
0

あなたは、現在のlocalStorageアイテムを取得することができます

var oldItem = localStorage.getItem("MedA"); 
var newItem = oldItem +", " + String(checkb.checked); 
localStorage.setItem(newItem, checkb.checked); 
0を

そして、カンマを扱う少しのロジックを追加することもできます(たとえば、元のローカルストレージ変数が空の場合はカンマなし)。ここで

関連する問題