尝试:
x[x.length-1].addEventListener("click", function () {
alert("test");
}, false);
请注意,第二个参数是对匿名函数的引用。之前,您在alert
执行此行时立即调用,而不是完成您真正想要的。
这是一个示例,基本上使用您提供的内容:http: //jsfiddle.net/8Q63G/
还有一个更好的例子,通过共享一个函数:http: //jsfiddle.net/8Q63G/1/
尽管要支持所有浏览器,但您应该使用以下内容:
window.onload = function () {
x = document.getElementById("box_area").childNodes;
for (var i = 0; i < x.length; i++) {
//x[i].addEventListener("click", boxClicker, false);
addEvent(x[i], "click", boxClicker);
}
};
function addEvent(element, event_name, func) {
if (element.addEventListener) {
element.addEventListener(event_name, func, false);
} else if (element.attachEvent) {
element.attachEvent("on"+event_name, func);
}
}
function boxClicker() {
console.log(this.innerHTML);
}
http://jsfiddle.net/8Q63G/3/
虽然还有更多选择。您可以将一个事件添加到“box_area”元素,然后检查event
'starget
和/或srcElement
属性以查看它是否是您正在寻找的孩子。此外,您可以在将元素添加到 DOM之前附加事件- 这与我的解决方案相同,只是它不需要您访问.childNodes
并获取最后一项。