2011-09-12 14 views
0

私はeval()を使用せずに以下を実行しようとしています。多くの投稿が遅くて邪悪だと言っているので、いつも別の方法があるので使用しないでください。evalを使用せずにjavascript文字列をコードに変換する

JS(私はjqueryのを使用しています注意してください)

$('a').click(function() { 

//Assign myVar to the id value of the a tag 
var myVar = $(this).attr('id'); 


$.getJSON("assets/js/json.js", function(json) { 
    alert("json."+myVar+".thumb"); 
    }); 

}); 

と私はmyVarを

<a id="imageID1" href="#">A link 1</a><br /> 
<a id="imageID2" href="#">A link 2</a> 

基本JSONファイル

{ 
"imageID1" : { 
    "thumb" : "assets/images/312px.png", 
    "zoomThumb" : "assets/images/gallery/_AR_0063_m_thumb.jpg", 
    "large" : "assets/images/gallery/_AR_0063.jpg" 
}, 

"imageID2" : { 
    "thumb" : "another.png", 
    "zoomThumb" : "assets/images/gallery/_anotherb.jpg", 
    "large" : "assets/images/gallery/another.jpg" 
} 

    } 
に値を渡すいくつかの基本的なHTMLを、持っています

クリックごとに各リンクのIDがmyVarに渡されますが、これはうまくいきますが、警告値が正しくありません。

たとえば、imageID2がクリックされている場合、警告は実際には「another.png」と表示されますが、実際に実行するコード「json.imageID @ .thumb」が表示されます。

今私は、トリックを行います

alert(eval("json."+myVar+".thumb")); 

にアラートラインを変更することができますが、前述のようにすることは、既知の問題のためにevalを使用する必要はありません。

これを行うための代替手段です。 ご協力いただきありがとうございます。

ベン

+0

可能重複[ダイナミックキーを使用してオブジェクトにアクセスするには?](http://stackoverflow.com/questions/6921803/javascript-how-to-access-json -object-using-dynamic-key) –

答えて

4

は、実行時に名前でプロパティを取得するために使用することができ

alert(json[myVar].thumb); 

インデクサ表記を記述しようとしています。これは動作するはず

+0

いいね、ありがとう。 これを試してソートしましたが、追加で追加しました。 \t alert(json。[myVar] .thumb); – Ben

1

、私は信じている:alert(json[myVar].thumb);

+0

うん、それはありがとう作品 – Ben

関連する問題