我只是想注册onclick
,div
但它不起作用。相反,alert
加载页面时会触发 cal to。
function print()
{
alert(' div clicked..');
}
var divElement = document.getElementById("content");
divElement.addEventListener("onclick", print());
这是一个jsFiddle。
我只是想注册onclick
,div
但它不起作用。相反,alert
加载页面时会触发 cal to。
function print()
{
alert(' div clicked..');
}
var divElement = document.getElementById("content");
divElement.addEventListener("onclick", print());
这是一个jsFiddle。
问题是您不需要前缀on
。并且不print
应该有空括号。空括号将导致函数执行,并将其返回值作为要调用的函数传递- 这不是您想要的。
尝试这个:
var divElement = document.getElementById("content");
divElement.addEventListener("click", print);
这是一个更新的工作 jsFiddle。
编辑:根据Ian 在下面的评论,这里有一个帮助函数,用于向后兼容特定版本的 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("click", print)
,你会做AttachEventListener(divElement, 'click', print)
。
使用帮助函数的主要原因是因为旧版本的 Internet Explorer没有,addEventListener
并且在使用时确实需要on
前缀attachEvent
。这个辅助函数将省去您在每个事件绑定上自己进行功能检查的麻烦。
你应该这样写:
divElement.addEventListener("click", print);
print
是一个指向你的函数的变量。
print()
是该函数的输出。(它没有输出,所以它是undefined
)
由于您要分配功能而不是输出,因此您必须使用print
.
此外,您不需要on
前缀。
Presto:http: //jsfiddle.net/AEjKC/