Javascript-向数组中的所有项添加事件侦听器

Javascript-向数组中的所有项添加事件侦听器,javascript,Javascript,我无法将事件侦听器应用于我创建的数组中的所有项。我在这里看过很多其他相关的帖子,但似乎没有一篇能涵盖我的确切情况 我知道for循环正在工作,因为我正在将它注销到控制台,并且可以看到每次迭代都会弹出。我甚至可以在控制台中看到事件监听器已应用于每个迭代,但在页面上的元素上实际鼠标移动时不会触发 有没有关于我可能遗漏什么的线索?完整的代码如下 同样,数组中的每个元素都是目标,我可以验证是否应用了侦听器,但它不会在鼠标悬停时触发 提前感谢您的建议 因此,每当鼠标移到p中的任何元素上时,都会调用add

我无法将事件侦听器应用于我创建的数组中的所有项。我在这里看过很多其他相关的帖子,但似乎没有一篇能涵盖我的确切情况

我知道for循环正在工作,因为我正在将它注销到控制台,并且可以看到每次迭代都会弹出。我甚至可以在控制台中看到事件监听器已应用于每个迭代,但在页面上的元素上实际鼠标移动时不会触发

有没有关于我可能遗漏什么的线索?完整的代码如下

同样,数组中的每个元素都是目标,我可以验证是否应用了侦听器,但它不会在鼠标悬停时触发

提前感谢您的建议

因此,每当鼠标移到p中的任何元素上时,都会调用addRedClass函数。这很好

现在让我们看看这个函数:

您可以修改p的类名

它是元素对象的非活动节点列表

在您创建className属性之前,它没有className属性

可能要使用this.className或在p上循环并重复使用p[i].className

因此,每当鼠标移到p中的任何元素上时,都会调用addRedClass函数。这很好

现在让我们看看这个函数:

您可以修改p的类名

它是元素对象的非活动节点列表

在您创建className属性之前,它没有className属性


可能要使用this.className或在p上循环并重复使用p[i].className

您需要在addRedClass函数上具有正确的作用域

var addRedClass = function() {
    this.className = this.className + " red-text";
};
通过使用this.className,可以引用鼠标悬停的标记


您不需要在changeHeader函数中使用它的原因是因为变量h只包含header节点。然而,变量p包含一个节点列表,它不是对节点的单一引用。因此,当addEventListener启动时,它将把您鼠标移到的标记作为作用域传递给addRedClass。这就是为什么这样做可以更改类名。

您需要在addRedClass函数上具有正确的作用域

var addRedClass = function() {
    this.className = this.className + " red-text";
};
通过使用this.className,可以引用鼠标悬停的标记


您不需要在changeHeader函数中使用它的原因是因为变量h只包含header节点。然而,变量p包含一个节点列表,它不是对节点的单一引用。因此,当addEventListener启动时,它将把您鼠标移到的标记作为作用域传递给addRedClass。这就是为什么这样做可以更改类名。

p在DOM中可能没有通过CSS的维度来允许鼠标覆盖。p在DOM中可能没有通过CSS的维度来允许鼠标覆盖。太棒了!这把它修好了。谢谢你的洞察力!明亮的这把它修好了。谢谢你的洞察力!
p.className = p.className + " red-text";
var addRedClass = function() {
    this.className = this.className + " red-text";
};