我试图在不使用eval()的情况下执行下面的操作,因为很多帖子都说这是缓慢而邪恶的,所以您不应该使用它,因为总会有其他方法。将JavaScript字符串转换为不使用eval的代码
的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");
});
});
,我有一些基本的HTML,它传入值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"
}
}
因此,每个链接的ID在点击时传递给myVar,这是工作正常,但警报值不正确。
例如,如果imageID2是点击,警报应该实际上显示“another.png”,而是显示我实际想要运行的代码“json.imageID @ .thumb”。
现在我可以警戒线改变
alert(eval("json."+myVar+".thumb"));
其中的伎俩,但提到不想使用eval由于知道的问题。
因此,任何替代方法做到上述。 在此先感谢您的帮助或提示。
本
的可能重复[如何使用动态密钥来访问对象?(http://stackoverflow.com/questions/6921803/javascript-how-to-access-json -object-using-dynamic-key) –