你命名郎變量是一個字符串,因爲你將其設置爲無線輸入的值,所以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