首页 > 解决方案 > Javascript 将样式附加到 event.target

问题描述

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

是否有另一种方法可以在不向所述元素附加样式的情况下为元素添加背景?

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

标签: javascript

解决方案


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

例如:

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

然后,这将创建一个全新的元素副本,在更改原始元素时不会更改该副本。

有关 cloneNode 方法的更多信息,请参见https://developer.mozilla.org/en-US/docs/Web/API/Node/cloneNode


推荐阅读