【发布时间】:2018-06-09 13:52:17
【问题描述】:
这是我的html文件/tmp/test/test.html
<!DOCTYPE html>
<html>
<head>
<script src="../js/my.js" defer>
</script>
</head>
<body>
<p>This example uses the HTML DOM to assign an "onchange" event to an input element.</p>
Enter your name: <input type="text" id="fname">
<p>When you leave the input field, a function is triggered which transforms the input text to upper case.</p>
</body>
</html>
这是我的 javascript 文件 /tmp/js/my.js,但事件处理程序的设置不起作用。为什么它不起作用,我该怎么做才能使它起作用?
function myFunction1(input) {
input.value = input.value.toUpperCase();
}
document.getElementById("fname").onchange = myFunction1;
如果我将 Javascript 文件的内容替换为
function myFunction2() {
var x = document.getElementById("fname");
x.value = x.value.toUpperCase();
}
document.getElementById("fname").onchange = myFunction2;
事件处理程序有效。我想知道为什么这两种方法有这么大的区别?
在外部 Javascript 文件或 html 文件中指定事件处理程序的设置首选哪种方式?
【问题讨论】:
-
事件处理器的第一个参数是
Event对象;不是你的<input>(应该是this)。 -
@Xufox 这就是我知道我今天工作太久了:)
标签: javascript html node.js dom-events