你命名郎变量是一个字符串,因为你将其设置为无线输入的值,所以lang.latitude,lang.longitude,lang.accuracy,lang.words和lang.map都未定义。
我假设你有全局变量,如de设置自从你说de.test的作品。
将所有这些语言放到一个单独的对象中,然后您可以通过该键或无线电输入的值进行引用可能是最容易的。我还添加了一个变量,允许您选择默认语言和将执行实际html更改的函数。
var translate = {
default: 'en',
en: {
latitude: 'latitude',
longitude: 'longitude',
accuracy: 'accuracy',
words: 'words',
map: 'map',
},
de: {
latitude: '',
longitude: '',
accuracy: '',
words: '',
map: '',
},
fr: {
latitude: '',
longitude: '',
accuracy: '',
words: '',
map: '',
},
changeText: function(lang) {
$('#latitude-n').html(translate[lang].latitude);
$('#longitude-n').html(translate[lang].longitude);
$('#accuracy-n').html(translate[lang].accuracy);
$('#words-n').html(translate[lang].words);
$('#map-n').html(translate[lang].map);
}
}
既然你不发表您的三个单选按钮的HTML,我要去,而不是给他们的名字,而不是属性的值为“郎设置”标识的,因为有重复的ID是无效的HTML 。以下是这些单选按钮的最小HTML。
<input name="lang-setting" value="en" type="radio" />
<input name="lang-setting" value="de" type="radio" />
<input name="lang-setting" value="fr" type="radio" />
然后你听众,我已经关掉它来听“点击”,而不是改变,因为单选按钮的值实际上没有改变,他们住,因为“en”,“ de“和”fr“。我还在文档中添加了函数调用,以便在页面加载时运行默认语言选择。
$('input[name="lang-setting"]').on('click', function(e){
var lang = $(this).val();
translate.changeText(lang);
});
$(document).ready(function(){
translate.changeText(translate.default);
});
这里有一个working demo of it on JSFiddle
lang是一个字符串,所以lang.latitude是不确定的。如果您在翻译窗口中创建了一个名为de的全局对象,则需要执行的操作是window [lang] .latitude,如果lang ==='de' – juvian
基本上是https:/ /stackoverflow.com/questions/4244896/dynamically-access-object-property-using-variable –
[动态访问对象属性使用变量](http://stackoverflow.com/questions/4244896/dynamically-access-object -property-using-variable) – juvian