Javascript 事件处理程序上的匿名函数未激活样式

Javascript 事件处理程序上的匿名函数未激活样式,javascript,html,Javascript,Html,我一直在试验一种使用事件监听器的技术,我在这里的堆栈溢出中找到了这种技术 我自己的问题是,我试图检索两个元素的元素id(通过测试id名称检索),并隔离对这些元素的任何样式/更改(有多个元素可能发生事件) 因为我不知道哪些元素可能会发生事件,所以我发现最大的问题是收集并传递我想要传递给侦听器的元素的id。我相信我已经找到了使用数组和if-else语句克服这一问题的方法。然后我发现了一个新问题 我使用这个示例将问题缩小到选项A或B。选项A需要使用样式修改元素,选项B则不需要。在本例中,我已经能够收集

我一直在试验一种使用事件监听器的技术,我在这里的堆栈溢出中找到了这种技术

我自己的问题是,我试图检索两个元素的元素id(通过测试id名称检索),并隔离对这些元素的任何样式/更改(有多个元素可能发生事件)

因为我不知道哪些元素可能会发生事件,所以我发现最大的问题是收集并传递我想要传递给侦听器的元素的id。我相信我已经找到了使用数组和if-else语句克服这一问题的方法。然后我发现了一个新问题

我使用这个示例将问题缩小到选项A或B。选项A需要使用样式修改元素,选项B则不需要。在本例中,我已经能够收集一个id并将其传递给侦听函数,但出于某种原因,侦听器中的匿名函数没有触发以修改选项A,尽管事件似乎已成功传递给侦听函数,我请求帮助以找出原因。如果我显式地将一个id硬编码给侦听器,程序就会工作

任何人能提供的任何帮助都将是巨大的,非常感谢

函数监听(elem、evnt、func){
if(elem.addEventListener){//W3CDOMS。
元素addEventListener(evnt、func、false);
}else if(elem.attachEvent){//IE DOM 7
var r=元件附件(“on”+evnt,func);
返回r;
}
}
函数attachListeners(){
var选择器=document.querySelectorAll(“div”);
对于(变量i=0;i
触摸我!

那我呢问题在于if语句中只获取元素的ID,而不是整个元素。您应该将其更改为:

    if (id_of_clicked_element === 'touch_me') {
      var touch_div = document.getElementById(id_of_clicked_element);
    } else if (id_of_clicked_element === 'What_about_me') {
      touch_div = document.getElementById(id_of_clicked_element);
    }

为什么要传递ID而不是对象?非常感谢你是对的。我也很感谢下面的Matus,因为我需要查看代码才能真正理解它。条件使用
=
==
而不是
=
谢谢我错过了这一点。非常感谢Matus的理论和代码,这正是我所需要的。就像很多事情一样,一旦有人向你展示了它,它就是完美的。在实践中,我不能让它与你的建议,使用多个等号,我只得到它的工作使用单等号-否则我收到的参考错误。但现在它可以工作了,这是最重要的。再次感谢您——这让我耽搁了一段时间——我需要更多地了解对象和javascript的本质。未来