Я пытаюсь сделать следующее без использования 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"
}
}
Таким образом, идентификатор для каждой ссылки передается в myVar по клику, это работает нормально, но значение предупреждения неверно.
Например, если щелкнуть по imageID2, на самом деле в предупреждении должно отображаться «another.png», но вместо этого отображается код, который я на самом деле хочу запустить, «json.imageID @ .thumb».
Теперь я могу изменить строку предупреждения на
alert(eval("json."+myVar+".thumb"));
Что делает трюк, но, как уже упоминалось, не хочет использовать eval из-за известных проблем.
Так что любой альтернативный способ сделать выше.
Заранее благодарим за любую помощь или советы.
Ben