在不使用eval的情况下将javascript字符串转换为代码
Converting javascript string to code without using eval
我试图在不使用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被点击,警报实际上应该显示"other.png",但它显示的是我实际想要运行的代码,"json.imageID@.thumb".
现在我可以将警戒线更改为
alert(eval("json."+myVar+".thumb"));
这很管用,但如上所述,由于已知问题,不想使用eval。
因此,任何其他方法都可以做到这一点。提前感谢您的帮助或提示。
Ben
您正在尝试编写
alert(json[myVar].thumb);
索引器表示法可用于在运行时按名称检索属性。
我相信这应该有效:alert(json[myVar].thumb);
相关文章:
- 将DOM节点值与字符串Javascript进行比较
- 到UpperCase字符串Javascript中的特定字符索引
- 替换字符串javascript中的所有特殊字符..
- 在数组中查找某些字符串(Javascript)
- 解析特定的字符串Javascript(Node.js)
- 从字符串 JavaScript 中过滤多个正则表达式
- 在字符串 JavaScript 中使用正则表达式替换
- 忽略字符串javascript中的字符
- 如何检查url是否包含多个字符串.Javascript/jquery
- 截断字符串JavaScript
- 计算字符串javascript中的某些单词
- 从'获取本月的最后一天;2015-02-23'字符串(javascript)
- 从字符串javascript中获取键值对
- 从路径字符串 - Javascript 获取所有父路径
- 在字符串Javascript中查找丢失的字母
- AngularJS:如何使所有ng模型都是字符串.JavaScript和长整数
- 将浮点转换为至少有一个小数点的字符串(javascript)
- 替换字符串 JavaScript 中的多个文本
- 检查另一个字符串 JavaScript 中一个字符串是否有任何字符的最佳方法
- 将变量的值包含在 href 字符串 javascript 中