javascript - 通过 CSS 选择器返回 DOM 元素

标签 javascript html css

假设我有这些 HTML 行:

<div id="ID1" class="Class1 Class3"></div>
<p id="ID2" class="Class2 Class3"></p>

我希望能够在给定 CSS 选择器或 TagName 的情况下返回数组中的 HTML 元素,这就是我目前所拥有的:

const selectors = document.getElementsByClassName("Class3");

let arr = [];
while (selectors) {
  arr.push(selectors);
  selectors = selectors.parentNode;
}

console.log(arr);
<div id="ID1" class="Class1 Class3"></div>
<p id="ID2" class="Class2 Class3"></p>

此代码有效并返回 HTML 元素,但我如何更改代码以使其只返回 HTML 元素(div 和 p),而不是 HTML 元素以及 CSS 选择器 - 如果可能的话?

所以输出是:[div, p]

编辑 我不能使用 document.querySelector/document.querySelectorAll 或任何库`

最佳答案

也许你想做一个 for of 并克隆元素以移除属性。像这样...

const selectors = document.getElementsByClassName("Class3");
const arr = [];
for (let selector of selectors) {
  const element = selector.cloneNode();
  for (let i = element.attributes.length - 1; i >= 0; i--) {
    element.removeAttribute(element.attributes[i].name);
  }
  arr.push(element);
}
console.log(selectors, arr);

请注意,反向遍历顺序很重要

输出

enter image description here

希望对您有所帮助。

提示:现在对变量使用constlet。实际上,“let 是新的 var”。

关于javascript - 通过 CSS 选择器返回 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56117998/

相关文章:

php - 在 symfony 2 中创建动态树

html - 修复 iPad 底部 iframe 内的 div

javascript - 为什么我不能通过只传递它的变量名来运行这个回调,但我可以将它包装在一个函数中?

javascript - 使用纯 javascript 查找 #wrapper 中是否有 img

javascript - Kendo DateTimePicker 不处理 UTC 偏移量

javascript - 如何防止浏览器从内存中选择选择框中的选项

javascript - 样式化提交按钮——Rails 应用程序

html - 无法垂直居中 css-animated svg

html - 将这些元素放置在一个 div 中的最佳方式是什么?

html - 如何使用 CSS FlexBox 创建这种复杂的页面布局