Javascript window.onload=function()的两个JS文件冲突
我有这个脚本来打开和关闭我的侧菜单,它有一个内置的HTML事件处理程序。然后我读到内置事件处理程序已经过时了。所以我把它改成了纯JS 我制作了自己的事件处理程序,它应该可以工作,但它返回了一个错误:uncaughttypeerror:无法将属性“onclick”设置为null 然后我读到也许我应该添加到JS:Javascript window.onload=function()的两个JS文件冲突,javascript,html,Javascript,Html,我有这个脚本来打开和关闭我的侧菜单,它有一个内置的HTML事件处理程序。然后我读到内置事件处理程序已经过时了。所以我把它改成了纯JS 我制作了自己的事件处理程序,它应该可以工作,但它返回了一个错误:uncaughttypeerror:无法将属性“onclick”设置为null 然后我读到也许我应该添加到JS: window.onload = function(){ // your code }; 我添加了这个函数,它成功了 但是,当我为一个手风琴添加了另一个JS并带有相同的窗口后,
window.onload = function(){
// your code
};
我添加了这个函数,它成功了
但是,当我为一个手风琴添加了另一个JS并带有相同的窗口后,它突然停止工作。onload
,因为它不想在没有该功能的情况下工作,或者
不在
内
我是JS的新手。你能帮助我吗?有没有可能在没有
窗口的情况下让两个js都工作。onload
并将它们放在
内?onload
,正如您所注意到的,它只能容纳一个事件处理程序。当您指定一个新的时,任何现有的都将被覆盖
相反,使用addEventListener()
,正如名称所示,在调用时添加一个侦听器
所以不是
window.onload = function () { ... };
照办
window.addEventListener('load', function() { ... });
请注意,在您的情况下,load
事件可能不是最佳的生命周期挂钩<代码>加载在DOMContentLoaded
之后,并且加载
等待所有外部资源(如图像、样式表、字体等)加载
更常见的情况是,您真正想要的是确保等待所有DOM元素都被解析并可用。为此,DOM API具有DOMContentLoaded
事件:
window.addEventListener('DOMContentLoaded', function() { ... });
除了这样处理侦听器,您还有两个其他选项:
标签放在关闭
标签的正前方:
<script src="path/to/my.js"></script>
将您的
放在
末尾之前。这样,在运行任何脚本之前,您可以确保所有HTML都已存在。如果第一条评论没有帮助,则无需使用窗口。onload
:请分享更多详细信息上述副本还有一种方法可以继续使用窗口。onload
,而不是将其替换为addEventListener
,如果您确实想这样做的话。
<head>
...
<script src="path/to/my.js" defer></script>
...
</head>