2015-07-20 134 views
2

这里是我的代码:为什么onload事件不起作用?

$('.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 ..!');} 

但他们都不起作用。为什么?!为什么当我刷新页面时没有看到任何消息?我该如何解决它?

+0

你定义'myFunc'方法? –

+0

因为myfunc是在on()的调用中声明的。你需要在那里声明它的范围,因此它的范围是全局的。 – dman2306

+0

http://stackoverflow.com/questions/588040/window-onload-vs-document-onload 看到这 –

回答

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

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

因为它是一个函数表达式,所以在当前作用域中不会创建一个名为myfunc的变量。它只能从内部访问,并从on函数中访问。

改为使用函数声明。

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

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

+0

您的示例正常工作。但实际上并不适用于我的代码。请检查我的更新... – Shafizadeh

+0

@Sajad - 为什么文档的加载事件有一个'(this).attr(“href”)'?这不是一个链接。这是一份文件。 – Quentin

+0

ow !!!!我懂了。这是问题,好吧,我怎样才能得到网址的结束?这里是我的网址:'www.example.com/contact#test',现在我需要'测试',我怎么能得到它? – Shafizadeh

0

函数的作用域不是全局的,所以你需要在click事件之外声明它。

+0

以及如何解决? – Shafizadeh

+0

函数myfunc(){alert('working');} – Kaspersky

+1

关于作用域:它不需要是全局的,但当它在'click'事件处理程序中定义时,它确实需要更大的作用域。 – Octopus

0

怎么样使用ready事件而不是负载?你可以阅读jQuery文档:

.load() 将事件处理程序绑定到“加载”JavaScript事件。

.ready() 指定DOM完全加载时执行的函数。

在我看来,整个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>

编辑 回答inital post。小心,我看到你在道具键和值<body onload = "myfunc()">之间放置空格,你不能这样做。它应该是key=value

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

+0

'ready'在'load '。为什么它应该有帮助? – Quentin

+0

héhé! thx :) 也许你可以“有效”的答案为其他用户;) –

+1

我认为你正在寻找单词“接受”,并且因为它不能解决问题(无论是原来的还是额外的编辑),它不应该被接受。 – Quentin

相关问题