Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.onload=function()的两个JS文件冲突_Javascript_Html - Fatal编程技术网

Javascript window.onload=function()的两个JS文件冲突

Javascript window.onload=function()的两个JS文件冲突,javascript,html,Javascript,Html,我有这个脚本来打开和关闭我的侧菜单,它有一个内置的HTML事件处理程序。然后我读到内置事件处理程序已经过时了。所以我把它改成了纯JS 我制作了自己的事件处理程序,它应该可以工作,但它返回了一个错误:uncaughttypeerror:无法将属性“onclick”设置为null 然后我读到也许我应该添加到JS: window.onload = function(){ // your code }; 我添加了这个函数,它成功了 但是,当我为一个手风琴添加了另一个JS并带有相同的窗口后,

我有这个脚本来打开和关闭我的侧菜单,它有一个内置的HTML事件处理程序。然后我读到内置事件处理程序已经过时了。所以我把它改成了纯JS

我制作了自己的事件处理程序,它应该可以工作,但它返回了一个错误:uncaughttypeerror:无法将属性“onclick”设置为null

然后我读到也许我应该添加到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>