多个Javascript文件不起作用

时间:2019-06-06 09:34:55

标签: javascript

我是Java的新手。我想包含两个以上的js(javascript)文件。当我在输入字段中键入某些内容(文本)时,特定功能未执行。 只有最后一个js文件(three.js)在工作。我所缺少的请告诉我。
     我的代码:

Text.html

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="UTF-8">
    <title>Myweb</title>
  </head>
<script src="one.js" type="text/javascript"></script> 
<script src="two.js" type="text/javascript"></script> 
<script src="three.js" type="text/javascript"></script> 
<style>


</style>
  <body>

<h1>Hello World!</h1>
<input type='text' placeholder='enter name' id='name'><br><br>
<input type='text' placeholder='enter uname' id='uname'><br><br>
<input type='text' placeholder='enter fname' id='fname'>

  </body>
</html>

one.js

window.onload = initPage;


function initPage() {

    document.getElementById("name").onchange=namefun;

}
function namefun(){
var name=document.getElementById("name").value;

alert("name:"+name);
}

two.js

window.onload = initPage;


function initPage() {

    document.getElementById("uname").onchange=unamefun;

}
function unamefun(){
var uname=document.getElementById("uname").value;

alert("uname:"+uname);
}

three.js

window.onload = initPage;


function initPage() {

    document.getElementById("fname").onchange=fnamefun;

}
function fnamefun(){
var fname=document.getElementById("fname").value;

alert("fname:"+fname);
}

任何帮助

谢谢

5 个答案:

答案 0 :(得分:2)

这是因为最后一个文件重新定义了initPage函数并重新分配了window.onload

您不能使用多个具有相同名称的函数,并且如果要对load事件使用多个回调,则必须使用.addEventListener进行设置。

答案 1 :(得分:2)

所有文件都将内容写入JS名称的全局范围,这意味着您的xargs函数会相互覆盖,因此,仅使用最后一个。您还将覆盖xargs的值,因此无论如何将仅调用其中一个。尝试改为使用initPage,例如:https://stackoverflow.com/a/25984032/1832228

答案 2 :(得分:2)

您每次都重置window.onload功能。这样,只有最后一个正在执行。

尝试以下操作:

window.onload = initPage;

function addEventHandler(obj, eventName, handler) {
  if (document.attachEvent) {
    obj.attachEvent("on" + eventName, handler);
  } else if (document.addEventListener) {
    obj.addEventListener(eventName, handler, false);
  }
}
function initPage() {
     addEventHandler(document.getElementById("name"), "change", namefun);
    addEventHandler(document.getElementById("uname"), "change", unamefun);
    addEventHandler(document.getElementById("fname"), "change", fnamefun);


}

答案 3 :(得分:1)

您每次都重置window.onload功能。

答案 4 :(得分:0)

您已经将window.onload初始化了3次,这意味着您正在休息,以便最后一个是分配给window.onload的赋值,以便仅执行最后一个。

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}


addLoadEvent(func1);
addLoadEvent(func2);
addLoadEvent(func3);