我是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);
}
任何帮助
谢谢
答案 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);