我eval()
用来执行由服务器发出的ajax请求返回的javascript。但是,我无法调用使用eval()创建的函数并得到了一个ReferenceError: function is not defined
。
用eval()执行的javascript内部函数无法访问是否正常?有没有办法使用这些功能?
我认为这个简单的jsFiddle可以说明问题:http : //jsfiddle.net/M2GLs/
创建的函数不在正确的范围内。因此,您的onclick无法“看到”它。使用
window.addFeatureToTable = function() {
// definition
}
强制其进入窗口范围。
工作中的JsFiddle
要在评论中回答您的问题:
您实际上拥有的是类似于以下代码的内容:
function a()
{
function b(where) {
alert('b can be called inside a, but not outside, we are now ' + where);
}
b('inside');
}
a();
b('outside');
b
在的范围内定义a
,并且只能在此范围内(demo)访问。在您的情况下,功能定义在一个eval之内,但是同样的规则也适用于eval。在这种情况下,范围为function(r)
。您无法从中访问此函数的作用域a.onclick
,因此必须更改函数定义。另外,您也可以在eval(jsFiddle)之后绑定单击,因为它仍然在作用域内:
js = "function someFunction() { alert('function called') }"
eval(js)
document.getElementById('myA').onclick = someFunction;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句