为什么 onload 事件不起作用?

why onload event not working?

这是我的代码:

$('.classname').on('click',function myfunc() {
  alert ('working ..!');
});

上面的代码工作正常,当我点击 div .classname 时,它给了我一条消息:working ..!

现在我想将该函数 (myfunc) 用于 onload 事件。这是我的尝试:

window.onload = myfunc;
window.onload = myfunc();
document.onload = myfunc();
<body onload = "myfunc()">
object.onload=myfunc(){alert ('working ..!');}

但其中 none 不起作用。为什么 ?!为什么,当我刷新页面时没有看到任何消息?我该如何解决?

函数作用域不是全局的,需要在点击事件外声明。

$('.classname').on('click',function myfunc() {
  alert ('working ..!');
});

您已经使用函数表达式创建了一个命名函数。您已将其传递给 on()

因为它是一个函数表达式,所以您不会在当前范围内创建一个名为 myfunc 的变量。它只能从自身内部和 on 函数内部访问。

改用函数声明。

function myfunc() {
  alert ('working ..!');
}
$('.classname').on('click', myfunc);
$(document).on('load', myfunc);

可以在 MDN 上找到有关 function declarations and expressions 的进一步阅读。

使用 ready 事件而不是加载怎么样?您可以在 jquery 文档中阅读:

.load() Bind an event handler to the “load” JavaScript event.

.ready() Specify a function to execute when the DOM is fully loaded.

在我看来,完整的 dom 应该完全加载(即,已经为滚动设置和计算的元素大小...)

function scroll() {
    alert('test');
     return false;
}

$('.link').on('click', scroll);
$(document).on('ready', scroll);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="link">manual test</a>

编辑 初始 post 的答案。小心,我看到你在 prop key 和 value <body onload = "myfunc()"> 之间放置空格你不能这样做。应该是key=value

var myfunc = function() {
  alert ('working ..!');
}
<body onload="myfunc()">
  <a onclick="myfunc()">manual test</a>
</body>