不使用Eval

时间:2017-07-29 03:51:14

标签: javascript jquery

我有一个元素,我有选择器,我想保留它的“.alt”属性并将其添加到数组中。

以前,我一直在使用

fakeArray.push(eval($("selector here").alt)) 

我认为我遇到了一个问题,eval的范围是全局的,其中我得到了这个错误。

Uncaught ReferenceError: $ is not defined
at eval ... 

奇怪的是,我的代码运行正常并且数组工作,除非我使它成为一个正确的函数。例如,这不起作用:

function testFunction (){
    // code here
}

如果我只是单独在函数内部运行代码,它就会起作用。

我想知道是否有替代eval在本地范围内使用选择器属性。此外,$(“选择器”).alt之外的任何方法都可以检索该alt值非常有用。

我目前正在Chrome Dev Tools中通过控制台运行我的代码,它只适用于我正在使用的特定上下文/范围。它不会在'top'中运行。

1 个答案:

答案 0 :(得分:3)

首先,您不想在此处使用eval。事实上,很少有情况可以使用eval了。它被认为是危险的,真的不应该再使用了。有些方法可以在不使用eval的情况下执行您想要的操作。请参阅the Mozilla documentation

要获取alt属性,它应该像执行$('selector').attr('alt')一样简单。虽然可能很高兴看到代码片段或示例来验证这是您想要的。

编辑:正如用户adeneo在问题评论中所提到的,您甚至不需要使用jQuery而是调用document.querySelector('selector').getAttribute('alt')