從你的代碼看起來你試圖在JavaScript中使用PHP風格的數組。 JavaScript數組不能像PHP數組一樣工作。這裏的東西,更可能的工作:
var lines = [
{ time: "10:00:00",
user: "User1",
content: "Line1"
},
{ time: "20:00:00",
user: "User2",
content: "Line3"
},
{ time: "30:00:00",
user: "User3",
content: "Line3"
}
];
爲了進一步解釋利特勒,在JavaScript中創建一個新的數組是這樣的:
var myArray = [ 5, 10, 15 ];
的方括號([]
)表示的開始和結束數組和逗號(,
)分隔數組中的每個元素。然後,要訪問數組中的元素,我們會做這樣的事情:
alert(myArray[0]);
...這將使「5」(第一,或「零」的數組中的元素)。
現在,雖然PHP有關聯數組(array('a' => 1, ...)
),但JavaScript中沒有「關聯數組」。相反,您使用的「對象常量,」像這樣:
var myObject = { a: 5, b: 10, c: 15 };
這將創建與屬性的新對象(你可以把它們想象成鍵)命名爲「A」,「B」和「C」。有兩種方法來訪問屬性:
alert(myObject['b']);
alert(myObject.b);
在這兩種情況下,「10」(我們分配財產「B」的值)將被給予。
現在回到練習中。你會看到在這裏我們創建了一個數組([]
)並給出了三個元素,每個元素都是一個對象字面值({}
)。要訪問,比方說,第一個元素的「用戶」屬性,我們這樣做:
alert(lines[0].user); // => "User1"
編輯:如果你想命名外數組中的元素,它必須改變一個對象文字,並可以被嵌套像這樣:
var lines = {
one: { time: "10:00:00",
user: "User1",
content: "Line1"
},
two: { ...
},
...
};
我命名爲清晰起見項目「一」,「二」和「三」,但你可以使用你請的任何值。但是,如果您打算使用數字屬性名稱(例如0,1,2等),那麼您可以使用其他數組而不是對象。與PHP不同,JavaScript不允許數組中存在「間隙」。例如:
var myArr = [1,2];
myArr[5] = 3;
alert(myArr); // => [ 1, 2, undefined, undefined, undefined, 3 ];
啊,我想我可能已經弄到我的PHP和JS混在一起了,我試圖同時學習兩者。是否有可能命名父數組的鍵? (只是好奇) – Diesal11 2010-10-21 06:18:56
是的,它是通過做'var line = {「0」:{time:「10:00:00」,...},...}'。然後它成爲一個對象,你可以迭代'for(var i in lines)' – 2010-10-21 06:29:38
Diesal11,我已經爲我的答案添加了一些說明。關於Salman的評論,對這樣的對象屬性進行迭代很棘手,原因有二:首先,它可能具有除你想要的屬性以外的屬性,特別是如果你使用外部庫如jQuery;其次,屬性不會被排序。如果你想以特定的順序迭代它們,你應該使用一個數組 - 對象不是一個有序的數據類型。 – 2010-10-21 06:38:29