当这段代码运行时,我收到错误,'无法读取属性'目标'未定义'。我想找到点击元素的背景颜色。我被告知因为我的CSS不是内联的,我需要使用getComputedStyle(我正在使用Chrome)。但是在第11行(或者是console.log(event.target))会抛出错误。为什么我甚至无法记录我点击的事件?
var options = document.getElementsByClassName("options");
for (var i = 0; i <options.length; i++) {
options[i].addEventListener("click", color_select(event), false)
}
function color_select(event) {
//this is the line that the error occurs on
console.log(event.target);
var e = event.target;
console.log(e);
var bgColor = getComputedStyle(e).backgroundColor;
console.log(bgColor);
}
答案 0 :(得分:2)
您没有正确添加事件侦听器。这样做:
options[i].addEventListener("click", color_select, false)
默认情况下,该事件将传递给该函数。但请记住,event.target
在IE8中都不起作用,addEventListener
也不起作用。
您的代码存在以下问题:
options[i].addEventListener("click", color_select(event), false)
它调用函数color_select并传递变量event
,此时未定义变量plate_id
。然后它尝试将函数的返回值(undefined)附加到事件侦听器。这就是它无法正常工作的原因。