html
1<body> 2 <div index="data1" onclick="save(this)">1</div> 3 <div index="data2" onclick="save(this)">2</div> 4 <div index="data3" onclick="save(this)">3</div> 5 <div index="data4" onclick="save(this)">4</div> 6<script> 7</script> 8</body>
javascript
1 //<script> 2 var save_file={"data1":{},"data2":{},"data3":{},"data4":{}}; 3 var save_data={"hp":100,"name":"aaaa","num":""}; 4 var num=0;//何回目か数える 5 6 function save(index){ 7 console.log(save_data); 8 save_data["num"]=num; 9 var index_data=index.getAttribute("index");//divのindex属性でどこにデータをセーブさせるか決めさせる 10 console.log(index_data); 11 12 save_file[index_data]=save_data;/ここで格納 13 14 console.log(save_file);//しかし二回目以降は前回入れた値もキーが違うのに上書きされてしまう 15 num++; 16 } 17 //</script>
1回目で「1」のdiv要素をクリックすると...
最後の
javascript
1console.log(save_file);
では
{data1: {…}, data2: {…}, data3: {…}, data4: {…}} data1: {hp: 100, name: "aaaa", num: 0} data2: {} data3: {} data4: {} __proto__: Object
と出力される
しかし2回目で「2」のdiv要素をクリックすると
{data1: {…}, data2: {…}, data3: {…}, data4: {…}} data1: {hp: 100, name: "aaaa", num: 1} data2: {hp: 100, name: "aaaa", num: 1} data3: {} data4: {} __proto__: Object
と出力され、1回目のdata1のnum:0が2回目のdata2のnum:1と同じ値に上書きされている。
なぜこうなるのか分からない
【補足】
javascript
1 save_file["data1"]={"a":"a","b":"b"}; 2 save_file["data2"]={"c":"c","d":"d"}; 3 save_file["data1"]={"e":"e","f":"f"}; 4 console.log(save_file);
を実行すると
{data1: {…}, data2: {…}, data3: {…}, data4: {…}} data1: {e: "e", f: "f"} data2: {c: "c", d: "d"} data3: {} data4: {} __proto__: Object
問題なくこう表示された。
このように別々のキーに保存する法王はないだろうか?
回答1件
あなたの回答
tips
プレビュー