Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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
尝试与window.onload一起执行两个JavaScript文件_Javascript_Onload - Fatal编程技术网

尝试与window.onload一起执行两个JavaScript文件

尝试与window.onload一起执行两个JavaScript文件,javascript,onload,Javascript,Onload,我有两个单独的JavaScript文件链接到一个HTML文档,当我运行它时,第二个JS文件似乎覆盖了第一个。我认为这与在每个文件中调用window.onload有关,但不确定如何解决这个问题 我尝试在其中一个JS文件上使用window.onloadend,在另一个JS文件上使用window.onload,但结果相同,window.onloadend是唯一执行的文件 file1.js function init() { applyFunction(); prefillForm();

我有两个单独的JavaScript文件链接到一个HTML文档,当我运行它时,第二个JS文件似乎覆盖了第一个。我认为这与在每个文件中调用window.onload有关,但不确定如何解决这个问题

我尝试在其中一个JS文件上使用window.onloadend,在另一个JS文件上使用window.onload,但结果相同,window.onloadend是唯一执行的文件

file1.js

function init() {
    applyFunction();
    prefillForm();
    var applyForm = document.getElementById("applyForm");
    applyForm.onsubmit = validate;
}

window.onload = init;
file2.js

function init() {
    currentPage();
    timer();
}

window.onload = init;

无论何时在-属性上分配
,都将覆盖以前附加到该属性的内容,并且当事件激发时,只有最新的处理程序将运行。改用
addEventListener

window.addEventListener('load', init);
(将其放在两个文件中的
.onload
行的位置)

或者,如果您不必等待加载整个文档(包括图像之类的内容),您可以改为侦听DOMContentLoaded,这将更快地触发。将填充DOM和所有元素,但并非所有资源都已下载:

window.addEventListener('DOMContentLoaded', init);

或者,最终您可以将
Init
函数重命名为非唯一函数,并在HTML中调用一个匿名函数,该函数按顺序调用这两个函数。在HTML中,将其称为:

load = () => {
   Init1();
   Init2();
}

正确的做法是将脚本放在
标记的末尾,而不是头的开头,这样可以完全解决onload/DOMContentLoaded检查问题,只需编写代码。还考虑在模块中多个脚本中进行工作:]我肯定会记下下一次做的,谢谢!