无法记录event.target(使用Chrome)?

时间:2016-02-03 14:34:27

标签: javascript google-chrome

当这段代码运行时,我收到错误,'无法读取属性'目标'未定义'。我想找到点击元素的背景颜色。我被告知因为我的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);   
}

1 个答案:

答案 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)附加到事件侦听器。这就是它无法正常工作的原因。