0

localstorageの JSON データに文字列として格納されたテーブルがあります。ここに格納されているフィールドの 1 つを別の JavaScript 変数と比較したいと考えています。

これが私が試したことです:

var goalsStr = localStorage.getItem("goals");
var goalsObj = JSON.parse(goalsStr); 
for (i=0; i<goalsObj.goals.length; i++) {
  if (goal==goalsObj.goals[i].goal) {
    //.....
    //.....
  }
}

しかし、それは機能していません。トラブルシューティングを行った結果、問題は比較にあると思います(goal == goalsObj.goals[i].goal)

これは、localStorage の「ゴール」内に実際に格納された値です。

var data = '{"goals": [{"goal":"'+goal+'","duedate":"'+date2+'","noofdays":"'+diff+'","active":"'+active+'"}]}';
localStorage.setItem("goals",data);

内部に格納されているオブジェクトの配列です。

これらの「diff」、「duedate」はすべて、ユーザーから取得した HTML フォーム データです。

どうしたの?私は何をすべきか?

4

1 に答える 1

0

データはすでに有効な JSON のようです。なぜ文字列化するのですか?私はあなたがやりたいと思う

var data = '{"goals": [{"goal":"'+goal+'","duedate":"'+date2+'","noofdays":"'+diff+'","active":"'+active+'"}]}';
localStorage.setItem("goals", data);

そして、その値を元に戻すときは、次の方法で JavaScript オブジェクトに変換します。

var obj = JSON.parse(localStorage.getItem("goals"));
于 2013-12-04T05:47:20.113 に答える