2016-09-29 4 views
0

オブジェクトのどののプロパティをオブジェクトの文字列を変換する方法を、ここにコードjsfiddle
HTMLとjQueryのです:それは私が少し多言語の変更を行っていますあまりにも

var dict = { 
 
\t fr: { 
 
    \t 'hello' : 'Bonjour', 
 
     'bye' : 'Au revoir' 
 
    }, 
 
    \t en: { 
 
    \t 'hello' : 'Hello', 
 
     'bye' : 'Bye' 
 
    } 
 
}; 
 

 
function text (lang){ 
 
\t $('h1').html(dict.lang.hello); 
 
     $('p').html(dict.lang.bye); 
 
}; 
 

 
$('a').click(function(){ 
 
\t 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>

何が私は欲しいです: "dict"オブジェクトからテキストを変更するには "en"または "fr"をクリックし、<a>タグの "title"を保存しましたが、パラメータ "function" "を表示します。TypeError:dict.la ngは定義されていません "、私はvar selectedが文字列であることを理解します。オブジェクトの" fr "と" en "を置き換えることはできません。
ここに質問があります:
文字列をオブジェクトのプロパティに変換する方法もオブジェクトですか?あなたのdict variabelのlang小道具がない、ので

+0

なし 'lang'小道具がdict'変数'ではありません! –

+2

ブラケット表記を使用する: 'dict [lang] .hello' https://jsfiddle.net/xra81qg6/12/ –

答えて

2

dict[lang].hellodict[lang].bye

var dict = { 
 
\t fr: { 
 
    \t 'hello' : 'Bonjour', 
 
     'bye' : 'Au revoir' 
 
    }, 
 
    \t en: { 
 
    \t 'hello' : 'Hello', 
 
     'bye' : 'Bye' 
 
    } 
 
}; 
 

 
function text (lang){ 
 
\t $('h1').html(dict[lang].hello); 
 
     $('p').html(dict[lang].bye); 
 
}; 
 

 
$('a').click(function(){ 
 
\t 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>

+0

これは機能します!ただsyntaxeエラー、私は複雑な方法にあった。 –

+0

問題ありません。幸せに助けてください:) –

1

としてそれを使用してください。あなたはそれを削除する必要があります。

hereを参照すると、連想配列としてオブジェクトの小道具にアクセスできます。例:array["name"]["nameagain"].id;

あなたの場合は、dict[lang]を使用してオブジェクトを取得するか、特定のデータとしてdict[lang].byeを使用して呼び出すことができます。

は、以下の私のスニペットを参照してください。

var dict = { 
 
\t fr: { 
 
    \t 'hello' : 'Bonjour', 
 
     'bye' : 'Au revoir' 
 
    }, 
 
    \t en: { 
 
    \t 'hello' : 'Hello', 
 
     'bye' : 'Bye' 
 
    } 
 
}; 
 

 
function text (lang){ 
 
\t $('h1').html(dict[lang].hello); 
 
     $('p').html(dict[lang].bye); 
 
}; 
 

 
$('a').click(function(){ 
 
\t 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>

+0

はい、それは動作します!ただ構文エラーです、私はこれを覚えています! –

関連する問題