新しいオブジェクト リテラルを配列に入れるのに問題があります。配列名を使用すると、すべてが機能します。しかし、配列名を保持している変数を使用するようにコードを切り替えると、機能しません。
次のような6つのアレイがあり、それらは私のページにリストされています。クリックすると、クリックされた配列の名前が whichList という変数に保存されます。
以下に 3 つの配列を示します。
student0 = [
{
status: "completed",
goal: "go to store",
duedate: "November 1",
datecreated: ""
}, {
status: "completed",
goal: "buy beer",
duedate: "November 2",
datecreated: ""
}
];
student1 = [
{
status: "completed",
goal: "go to the beach",
duedate: "November 7"
}, {
status: "completed",
goal: "swim without drowning",
duedate: "November 8",
datecreated: ""
}
];
student2 = [
{
status: "completed",
goal: "fly a plane",
duedate: "November 11",
datecreated: ""
}, {
status: "completed",
goal: "don't crash",
duedate: "November 12",
datecreated: ""
}
];
これは、配列名を直接指定している作業コードです。クリックすると、更新された配列がコンソールに表示されます。
$('#savegoal').click(function() {
datecreated = new Date();
student0[student0.length] = {
status: "pending",
goal: "\"" + $('#thegoal').val() + "\"",
duedate: "\"" + $('#thedeadline').val() + "\"",
datecreated: "\"" + datecreated + "\""
};
return console.log(student0);
});
これが非動作コードです。whichList 変数を使用したい。
console.log を使用して、関数の先頭で変数が正しい配列名を示していることを確認しました。大丈夫です。しかし、コンソールに表示されるのは配列変数だけであり、作業中のバージョンのように配列の内容ではありません。
$('#savegoal').click(function() {
datecreated = new Date();
whichList[whichList.length] = {
status: "pending",
goal: "\"" + $('#thegoal').val() + "\"",
duedate: "\"" + $('#thedeadline').val() + "\"",
datecreated: "\"" + datecreated + "\""
};
return console.log(whichList);
});