我只是想注册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/