javascript - Javascript 将样式附加到 event.target
问题描述
我有一个函数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
推荐阅读
- java - 如何创建 Firebase 短动态链接
- artifactory - JCenter maven-metadata.xml 没有来自 Maven Central 的所有模块版本
- avro - 尝试将 JSON 转换为 AVRO 时没有类型错误
- javascript - 单击带有 chrome 扩展名的按钮(错误/不工作)
- docker - “docker.io”在我的 GCP 虚拟机上没有安装候选
- python - 将日期时间分组为天但基于 id 完成的最佳方法
- c# - C# 将重复的 XML 标记获取到 DataTable 中
- wxpython - wxpython statictext异常显示
- c++ - Polymorphic function object not working as a type in a template function, type name is not allowed
- database - 如何使用 Process 参数连接到 Oracle DB?