2011-01-30 52 views
0

我有一個對象字面:閱讀對象文本中JS與功能結果

var content = { 
    classname1:"content", 
    classname2:"content" 
} 

這樣content.classname1是很容易訪問。但我並不想聲明classname1而不是使用函數來獲得類名,並把它傳遞給我的對象:

function getMyClass { 
// some code 
return myclass; 
} 

content.myclass 

其中myclass是一個函數的結果。但那不行。我不知道如何連接函數的結果content.

背景是:我希望工具提示可以在我的網站上顯示幾乎完整。因此,一個函數可以找出元素的類,然後從對象文本中顯示與其關聯的內容。所以管理類名和內容將非常簡單。

謝謝。

+0

這裏的代碼片段中有語法錯誤。無論如何,我試着在下面給你提供答案。 – 2011-01-30 00:21:22

+0

getMyClass()是document.getElementsByTagName('name_of_class');`;的副本似乎是多餘的。該函數的參數是什麼? – 2011-01-30 00:29:36

回答

0
function getMyClass { 
    // some code 
    return "myclass"; 
} 

content["myclass"]; 

這可能是什麼你在尋找。你的問題有點含糊。

您也可以試試:

for (var key in content) { 
    if (content.hasOwnProperty("key")) { 
     addContent(key, content[key]); 
    } 
} 

function addContent(className, content) { 
    // do stuff 
} 
2

obj.property是語法糖obj['property']

您可以訪問使用[]符號,而不是點符號對象的成員。如果使用括號,則可以將任何評估爲括號內的字符串。這使您可以動態指定屬性或obj['2nd property']

所以使用不是有效的JavaScript標識符屬性名...例如,嘗試:

content[getMyClass()]

+0

太棒了!這就是我一直在尋找的。謝了哥們! – Chrisissorry 2011-01-30 11:25:48

0

如果你想使用的功能(也許還有比簡單的選擇一個物業的價值更多的邏輯),這裏有一個方法:

var content = { 
    classname1:"contentbbbb", 
    classname2:"contentaaaa", 
    getClassName : function(which){ 
    // do stuff, check things 
    return this[which]; 
    } 
} 

然後你會有:

content.getClassName('classname1'); // returns 'contentbbbb'