2015-06-11 139 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