如果我将它放在document.ready调用中,为什么我的javascript函数不会被调用。
$(document).ready(function () {
//doesn't get called
function Test() {
//do something
}
}
///does get called
function Test() {
}
从我的html元素中的onchange事件调用
我认为那意味着你有类似
<input onchange="Test()" />
在您的HTML中。
在这种情况下,答案是:由于范围。
内联事件处理程序在全局范围内评估。在第一个示例中,Test
不在全局范围内定义,而是在传递给的函数内部定义$(document).ready
。因此,内联事件处理程序无法找到该函数。
这是一个简化的示例:
function ready() {
function Test() { }
}
ready();
Test(); // ReferenceError because Test is not defined in this scope
注意$(document).ready
,除了显式地不在全局范围内放置函数定义外,没有理由将函数定义放在回调内。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句