2015-06-11 138 views
0

有很多我不太瞭解JavaScript,所以我可能會誤解有關對象的基本知識。我知道有一個區別。和[],所以這可能是問題的一部分,但我不知道如何解決這個問題。將對象鍵傳遞給函數

var game = { 
    playerlvl:1 
} 

function displayinfo(name){ 
    var info = document.getElementById(name); 
    info.innerHTML = game[name]; 
} 

displayinfo(playerlvl); 

我想導致功能一樣:

document.getElementById("playerlvl").innerHTML = game.playerlvl; 

回答

2

所有你錯過了引號:

displayinfo("playerlvl"); 

在JavaScript中,你可以使用點符號訪問屬性和文字屬性名稱(game.playerlvl),或使用括號符號和字符串屬性名稱(game["playerlvl"])。 (在ES6中,括號符號也將支持Symbol s)括號中的字符串(或Symbol)可以是任何表達式的結果,包括變量/參數查找。所以game[name]的作品,如果name的價值是一個字符串或可合理地變成一個。

您已經在displayinfo中正確使用括號符號,您只需要傳遞一個字符串而不是使用文字。您的代碼使用文字試圖在displayinfo(playerlvl)行上使用名爲playerlvl的變量,該變量不存在,因此得到ReferenceError