2015-06-11 2 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 с.) Строка (или Symbol) в скобках может быть результатом любого выражения, включая поиск переменных/аргументов. Таким образом, game[name] работает, если значение name является строкой или может быть превращено в один.

Вы уже правильно используете в скобках нотацию в displayinfo, вам просто нужно передать ей строку, а не использовать литерал. Ваш код с использованием литерала пытается использовать переменную playerlvl на линии displayinfo(playerlvl), которая не существует, и поэтому получает ReferenceError.

Смежные вопросы