Javascript 将样式附加到 event.target

标签 javascript

我有一个函数clickEvent(event)和一个数组。我想将元素推送到数组,然后循环遍历此列表,将这些元素与包含相同元素的另一个数组的元素进行比较。问题是,当我向元素添加样式时,该元素的 HTML 发生变化,不再与其他列表中的元素相同。为什么包含样式的元素会添加到列表中?我在推送元素后添加样式,所以我不明白为什么会发生这种情况。

是否有另一种方法可以向元素添加背景而不向所述元素附加样式?

clickEvent(event) { 
   array.push(event.target);
   event.target.style.background = 'red';
} 

最佳答案

您添加到列表中的只是对 HTML 元素的引用,而不是实际元素本身。 您需要做的是克隆事件目标并将克隆添加到列表中。

例如:

array.push(event.target.cloneNode());

这将创建该元素的全新副本,当原始元素更改时,该副本不会更改。

有关cloneNode方法的更多信息可以在 https://developer.mozilla.org/en-US/docs/Web/API/Node/cloneNode 找到

关于Javascript 将样式附加到 event.target,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54677967/

相关文章:

javascript - AngularJS 分页和无法读取未定义的属性 'slice'

javascript - HtmlUnit:HtmlPage 序列化异常

javascript - 挤压无响应的网页

javascript - 访问数组中的所有元素

javascript - JS onkeydown/onkeyup - 转换为 jQuery keydown/keyup

javascript - 在 Twitter Bootstrap Datepicker 上禁用当前日期突出显示

javascript - vue.js 帖子列表在表单提交后未更新

javascript - 如何向客户端设置 CORS header

javascript - 如何使用 CSS 将 Google Charts 注释移动到顶部或任何位置?

javascript - 当用户登录同一页面时,如何使用另一个 css 设计更改登录 <li>