作品:
<div onclick="UpdateAttributes();">Update</div>
<script>
function UpdateAttributes() {
alert(1);
}
<script>不工作:(UpdateAttributes未定义)
<div onclick="UpdateAttributes();">Update</div>
<script>
$(function(){
function UpdateAttributes() {
alert(1);
}
});
<script>为什么这里会发生这种事?我认为好的旧货总是报关的最安全的赌注?
谢谢!
发布于 2015-07-08 22:34:12
在第二个示例中,UpdateAttributes只对ready回调函数的闭包可见。
它在第一种情况下工作,因为该函数是全局可见的。对于第二个示例,要使其工作,可以将其修改为
$(function(){
$('div').click(UpdateAttributes);
function UpdateAttributes() {
alert(1);
}
});因为UpdateAttributes在回调本身中是可见的。另外,移除div本身中的内联div处理程序。
发布于 2015-07-08 22:36:01
因为在第二个示例中,您在另一个函数中声明了函数。
在javascript中,一个函数表示一个本地作用域,在该作用域中创建的任何内容都将在该作用域退出时被销毁,除非您通过返回它或其他方式显式地公开它。
AmmarCSE通过将函数分配给事件处理程序,展示了显式公开该函数的另一种方法。
在您的示例中,您将它赋值为字符串,并且只绑定到全局函数。
另一种方法是在函数中使用窗口“UpdateAttributes”= UpdateAttributes;但这是一个粗糙而丑陋的解决方案;)
https://stackoverflow.com/questions/31304986
复制相似问题