0

こんにちは私はjavasciptにまったく慣れていないので、物事を明確に説明してください。私は現在、以下を含むphpページを実行しています。

<input type="text" id="data"/>

<script>
document.getElementById("data").value = localStorage.getItem('itemsArray');
</script>

このitems配列には、次のように保存されるオブジェクトが含まれています。

function save(){

var oldItems = JSON.parse(localStorage.getItem('itemsArray')) || [];

var newItem = {};
var num = document.getElementById("num").value;

newItem[num] = {
    "methv": document.getElementById("methv").value
    ,'q1': document.getElementById("q1").value,
    'q2':document.ge27548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}},{"1173627548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}},{"1173627548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}},{"1173627548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}},{"1173627548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}},{"1173627548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}}]tElementById("q2").value,
    'q3':document.getElementById("q3").value,
    'q4':document.getElementById("q4").value,
    'comm':document.getElementById("comm").value
};


oldItems.push(newItem);

localStorage.setItem('itemsArray', JSON.stringify(oldItems));}

ページの結果は次のように表示されます。

[{"1173627548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}},{"1173627548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}},{"1173627548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}},{"1173627548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}},{"1173627548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}},{"1173627548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}}]

とにかくデータを分割できるので、ループなどのように一度に1つずつ操作できますか。例えば:

初回:

{"1173627548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}}

次:

{"1173627548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}}

ありがとう。

4

3 に答える 3

2

oldItems配列を埋めるときにsave()メソッドが行うようにJSON.parse()を実行する必要があります。そうすれば、結果の配列を循環させることができます。

コード例:

<input type="text" id="data"/>

<script>
 var myArray = JSON.parse(localStorage.getItem('itemsArray')) || [];
 for (var i = 0; i < myArray.length; i++) {
    var element = myArray[i];
    // Do something with element.
 }
</script>
于 2013-03-15T14:19:34.470 に答える
1

データはすでに配列で返されます。これは、標準のforループでループできます。ただし、最初に解析して、標準のオブジェクトメソッドを使用してアクセスできるオブジェクトを作成することをお勧めします。

例えば:

var allItems = JSON.parse(localStorage.getItem('itemsArray')) || [];
for(var i = 0; i < allItems.length; i++) {
  var item = allItems[i];
  console.log('Current item: %o', item);
  // do whatever you want to it, etc.
}
于 2013-03-15T14:27:00.980 に答える
0

こんにちは保存スクリプトがテキストフィールドからデータを取得し、それらを配列内のオブジェクトとして追加しているようです。

アレイはローカルストレージに保存され、次のように取得できます。

var items = JSON.parse(localStorage.getItem('itemsArray')) || [];

これは配列であるため、単純なforループでループできるはずです。

for(var i in items){
  // this has the i object within the array
  var item = items[i];

  // if you dont know the names of the keys in the array
  // you can loop through this again using another loop
  for(var j in item){
    // you can then change this key like so:
    items[i][j] = item[j].toUpperCase(); // (this makes the value upper-case for example)
  }

  // if you do know the names then you can just change them directly
  items[i].q1 = items[i].q1.toUpperCase();

}
于 2013-03-15T14:22:00.380 に答える