Javascript 无法使用addEventListener注册onclick
我正在尝试为Javascript 无法使用addEventListener注册onclick,javascript,Javascript,我正在尝试为div注册onclick,但它不起作用。相反,加载页面时会触发cal to警报 function print() { alert(' div clicked..'); } var divElement = document.getElementById("content"); divElement.addEventListener("onclick", print()); 这是一个。你应该这样写: divElement.addEventListener("click",
div
注册onclick
,但它不起作用。相反,加载页面时会触发cal to警报
function print()
{
alert(' div clicked..');
}
var divElement = document.getElementById("content");
divElement.addEventListener("onclick", print());
这是一个。你应该这样写:
divElement.addEventListener("click", print);
print
是一个指向函数的变量
print()
是该函数的输出。(它没有输出,因此未定义
)
由于要分配函数而不是输出,因此必须使用print
此外,您不需要
前缀上的
Presto:问题是您不需要
前缀上的。和print
应该不有空括号。空括号将导致函数执行,其返回值将作为要调用的函数传递-这不是您想要的
试试这个:
var divElement = document.getElementById("content");
divElement.addEventListener("click", print);
这是一个例子
编辑:根据下面的内容,这里有一个帮助函数,用于向后兼容特定版本的Internet Explorer
function AttachEventListener(element, event, handler) {
if (element.addEventListener) {
element.addEventListener(event, handler, false);
} else if (element.attachEvent) {
element.attachEvent('on' + event, handler);
} else {
alert('Invalid element specified for AttachEventListener');
}
}
您不需要使用divElement.addEventListener(“单击”,打印)
,而是使用AttachEventListener(divElement,“单击”,打印)
使用helper功能的主要原因是,旧版本的Internet Explorer没有addEventListener
,并且在使用attachEvent
时需要on
前缀。此helper函数将为您省去在每个事件绑定上自行检查功能的麻烦。注意:attachEvent
(这不是问题的一部分)确实需要“打开”prefix@Jesse哦,你不必,我只是想让看到这个问题/答案的人知道。这可能是也可能不是这个问题发生的原因(或者是因为元素的常规设置.onclick
属性)。@Ian Yup,我理解你想要实现的目标,但我也为所有未来的用户完成了。=)@杰西:哈哈,听起来不错,我以前以为你的答案不错,但现在好多了:)