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,我理解你想要实现的目标,但我也为所有未来的用户完成了。=)@杰西:哈哈,听起来不错,我以前以为你的答案不错,但现在好多了:)