我正在进行一些多语言更改,这里是代码jsfiddle
html和jQuery:
var dict = {
fr: {
'hello' : 'Bonjour',
'bye' : 'Au revoir'
},
en: {
'hello' : 'Hello',
'bye' : 'Bye'
}
};
function text (lang){
$('h1').html(dict.lang.hello);
$('p').html(dict.lang.bye);
};
$('a').click(function (){
var selected = $(this).attr('title');
text(selected);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#/" title="fr">fr</a>
<a href="#/" title="en">en</a>
<h1>Bonjour</h1>
<p>Au revoir</p>
我想要的是:点击“en”或“fr”来改变“dict”对象中的文字,我存储了<a>
标签的“标题”,但当我把它放到函数中时“text”作为参数,控制台显示“TypeError:dict.lang未定义”,我理解var selected
是一个字符串,它不能代替“fr”和对象中的“en”
所以这是一个问题:
如何将字符串转换为对象的属性,它也是一个对象?
答案 0 :(得分:2)
将其用作dict[lang].hello
和dict[lang].bye
var dict = {
fr: {
'hello' : 'Bonjour',
'bye' : 'Au revoir'
},
en: {
'hello' : 'Hello',
'bye' : 'Bye'
}
};
function text (lang){
$('h1').html(dict[lang].hello);
$('p').html(dict[lang].bye);
};
$('a').click(function (){
var selected = $(this).attr('title');
text(selected);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#/" title="fr">fr</a>
<a href="#/" title="en">en</a>
<h1>Bonjour</h1>
<p>Au revoir</p>
答案 1 :(得分:1)
因为lang
变量上没有dict
道具。所以你需要删除它。
从here引用,您可以访问对象的道具作为关联数组。例如:array["name"]["nameagain"].id;
因此,对于您的情况,您可以使用:dict[lang]
来获取对象,或dict[lang].bye
作为特定数据。
请参阅下面的我的代码:
var dict = {
fr: {
'hello' : 'Bonjour',
'bye' : 'Au revoir'
},
en: {
'hello' : 'Hello',
'bye' : 'Bye'
}
};
function text (lang){
$('h1').html(dict[lang].hello);
$('p').html(dict[lang].bye);
};
$('a').click(function (){
var selected = $(this).attr('title');
text(selected);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#/" title="fr">fr</a>
<a href="#/" title="en">en</a>
<h1>Bonjour</h1>
<p>Au revoir</p>
&#13;