我不知道为什么下面的代码不起作用!但是,如果我将var eva = function(){alert("hello");}
更改为function eva() {alert("hello");}
,它将起作用。
var myForm = document.forms["form1"];
myForm.addEventListener("submit", eva);
var eva = function() {
alert("hello");
}
最佳答案
通过eva
添加addEventListener
函数时,这是一个未定义的变量。然后,将其设置为功能。本质上,当您像这样写时:
var myForm = document.forms["form1"];
myForm.addEventListener("submit", eva);
var eva = function() {
alert("hello");
}
您正在有效地编写以下代码:
var myForm = document.forms["form1"];
var eva; // = undefined
myForm.addEventListener("submit", eva);
eva = function() {
alert("hello");
}
var
的声明获取hoisted,而不是赋值。通过使用函数声明,function eva() { ... }
类似于hoisted到达作用域的顶部,并且在将其传递给addEventListener
时是有效的函数。因此,您有两个选择:
将var声明和赋值移动到
addEventListener
的调用上方。使用函数声明。
关于javascript - 为什么var eva = function(){}对addEventListener()不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20426008/