あなたはラジオ入力の値に設定しているので、LANGという名前の変数が文字列なので、lang.latitude、lang.longitude、lang.accuracy,lang.wordsおよびlang.mapはすべて定義されていません。
あなたは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);
}
}
あなたは3つのラジオボタンのHTMLを投稿していなかったので、私は重複したIDを持つことはHTML無効であるため、代わりに名前が値「LANG-の設定」でのIDの代わりに属性をそれらを与えるつもりです。以下は、これらのラジオボタンの最小限の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-use-variable) – juvian