我试图通过变量访问对象。我在lang中保存了一个看起来像这样的对象:
{TeamspeakControl: "Teamspeak Control"}
现在我想把字符串放在一个变量上:
console.log(lang["TeamspeakControl"]);
如果我现在运行此操作,我会在控制台中收到错误:
未捕获的TypeError:无法读取未定义的属性'TeamspeakControl'
有人有想法吗?
var lang = {TeamspeakControl: "Teamspeak Control"};
$('lang').each(function() {
console.log(lang[$(this).attr('label')]);
$(this).html(lang[$(this).attr('label')]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://rawgit.com/utatti/perfect-scrollbar/master/css/perfect-scrollbar.css" rel="stylesheet"/>
<script src="https://rawgit.com/utatti/perfect-scrollbar/master/dist/perfect-scrollbar.js"></script>
<lang label="TeamspeakControl"></lang>
它有效。看起来我的获取是异步的并且要慢。这就是我的lang对象将被填充的方式。
var lang = Object();
$.get('lang', function(data) {
lang = data;
});
答案 0 :(得分:0)
看起来它有效,如果我让它像这样异步:
$.get('lang', function(data) {
var lang = data;
$('lang').each(function() {
$(this).html(lang[$(this).attr('label')]);
});
});
但这是一个很好的解决方案吗?
答案 1 :(得分:-1)
奇怪......这对我有用:
var lang = {TeamspeakControl: "Teamspeak Control"};
console.log(lang["TeamspeakControl"]);
一般来说,你做得对,你只需要注意你将对象分配给运行console.log
的同一范围内的变量。
在你的情况下你可以console.log
只在回调内部,即使它很慢:
var lang = Object();
$.get('lang', function(data) {
lang = data;
console.log(lang);
});