2012-05-20 25 views
0
var events = [ 
    {id: 100,url: "mc.jsp?id=" + id}, 
    {id: 200,url: "mc2.jsp?id=" + id}, 
    {id: 300,url: "mc2.jsp?id=" + id} 
] 

運行時內部,網址等於mc.jsp?id=undefined, 所以如何能在ID(100)分配給的網址,獲取mc.jsp?id=100價值? 也使第二個網址爲mc2.jsp=200和第三個mc2.jsp?id=300 所以我不能在陣列外進行分配。如何使分配的Javascript數組

+3

你想要做的事情不會奏效。向我們展示更多的循環,我們將能夠給出更好的答案。 –

回答

2

您無法在結構上訪問對象字面值中的其他屬性。您得到undefined,因爲您沒有變量id。您將需要使用:

var id = 100; 
var events = [{"id":id, "url":"mc.jsp?id=" + id}]; 

或:

var event = {id: 100}; 
event.url = "mc.jsp?id=" + event.id 
var events = [event]; 

,但你可以定義一個getter:

var events = [{id: 100, get url() { return "mc.jsp?id="+this.id; } }]; 

這是非常複雜和難以理解。也許最好是這樣做:

function MyEvent(id, mc) { 
    this.id = id; 
    this.mc = mc; 
} 
MyEvent.prototype.getUrl = function() { 
    return "mc"+this.mc+".jsp?id="+this.id; 
}; 

var events = [new MyEvent(100, ""), new MyEvent(200, "2"), ...]; 

但是,應該沒有這樣的問題。如果你硬編碼的數字,你爲什麼不硬編碼的網址?如果您不想要冗餘,只需將該ID保存兩次,並在每次需要時追加它。

+0

但是它是陣列,我不能在 – Hypnoz

+0

這樣的方式之外分配它,每一個項目我需要一個內部資料庫? – Hypnoz

+0

當'prototype'進入時,事情開始變得複雜...但它很方便! –

0

您不能添加id,因爲它的屬性名稱而不是變量。 你可以這樣做:

var ids = [100,200,300]; 
var events = []; 
for(var i = 0; i < ids.length;i++){ 
    events[i] = {id: ids[i],url: "mc.jsp?id=" + ids[i]}; 
} 
+0

但數組中的不同項目將具有不同的值,因此我無法將它們全部設置爲100 – Hypnoz

+4

您的代碼中已經硬編碼了100個。似乎你有另一個問題,你沒有提到你的問題。 –

+0

@juggernaut根據您更新的問題更新了答案 –

0
var id = 100, events = [{id: id, url: "mc.jsp?id=" + id}]; 
0

你可以嘗試類似的東西。

var event = { 
'id': 100, 
'url': 'mc.jsp?id=' + event.id 
} 

var events = []; 
events.push(event);