javascript - 如何使用 javascript 检查 HTMLCollection 是否包含具有给定类名的元素?

标签 javascript

您好,我是编程新手,我想使用 javascript 访问对象内的数组...

我有如下的数据结构,

const some_obj = {
    accessKey: "",
    children: [
        div.someclassname,
        div.someclassname,
        div.someclassname.highlight,
    ]
}

下面是我记录变量时在浏览器控制台中的样子。

object
current: div.wrapper
    accessKey: ""
    align: ""
    childElementCount: 4
    childNodes: NodeList(4) [div.someclassname, div.someclassname.highlight, 
    div.someclassname]
    children: HTMLCollection(4) [div.someclassname, 
    div.someclassname.highlight, div.someclassname]

在控制台中打印 some_obj.children 给出以下输出。 对象. child HTML 集合(3) 0: div.someclassname 1:div.someclassname.highlight 2: div.someclassname

现在我想从 some_obj 检查 some_obj 是否在 children 数组中有 div.classname.highlight。我该怎么做。

我试过用 some_obj.current.children.find() 但说 find 不是函数。

我如何检查 some_obj child 是否有 div.someclassname.highlight。谁能帮我解决这个问题。谢谢

最佳答案

因为 child 不是简单的Array而是HTMLCollection ,应该看的是:Array.from(NodeList)

假设我们要查找元素 div.someclassname.highlight 是否存在于 children 上(测试类名 someclassname & 高亮).

let childrenNodeArr = Array.from(some_obj.children);
/*or with spread operator [...some_obj.children]*/
/*each element is a dom node we can run classList.contains*/
const elemFound = childrenNodeArr.find(
  e =>
    e.classList.contains("someclassname") && e.classList.contains("highlight")
);

if (elemFound) {
  /*yes a div.someclassname.highlight*/
}

注意:以上测试将通过类名 someclassnamehighlight 的任何 dom 元素,而不仅仅是 divElement.classList.contains Array.from Array.find

关于javascript - 如何使用 javascript 检查 HTMLCollection 是否包含具有给定类名的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57874892/

相关文章:

javascript - 如何使用 Javascript Cropper 修复发布到服务器的图像大小

javascript - 如何制作在 x 轴上具有动态月份的 Chart.js

JavaScript 抛出 TypeError 说我的变量未定义

javascript - Webpack 编译 React.js 项目失败

JavaScript 事件在 for 循环中被覆盖

javascript - jQuery 严重计算元素的高度

javascript - 这如何成为递归结构?

javascript - 数据表:需要按 HTML 中的数据对列进行数字排序

javascript - 按引用设置数组/按值设置数组

javascript - 扩展javascript函数继承数组