美文网首页
js用前缀名查找class或id节点,js模糊查询某个dom节点

js用前缀名查找class或id节点,js模糊查询某个dom节点

作者: 天渺工作室 | 来源:发表于2023-04-04 23:25 被阅读0次

js在操作dom的场景中,有时候会有类似的场景需求。

js用前缀名查找class节点
// 参数dom为html dom节点
// 参数key为需模糊查询的名称字段
function queryClassNode(dom, key) {
    let collectArray = [];
    for (var i = 0; i < dom.childNodes.length; i++) {
        // 核心点
        if (dom.childNodes[i].attributes && dom.childNodes[i].attributes["class"] && dom.childNodes[i].className.indexOf(key) !== -1) {
            collectArray.push(dom.childNodes[i]);
        }
        if (dom.childNodes[i].childNodes.length > 0) {
            let res = queryClassNode(dom.childNodes[i], key);
            for (var k = 0; k < res.length; k++) {
                collectArray.push(res[k]);
            }
        }
    }
    return collectArray;
}
js用前缀名查找Id节点
// 参数dom为html dom节点
// 参数key为需查询的前缀名
function queryIdNode(dom, key) {
    let collectArray = [];
    for (var i = 0; i < dom.childNodes.length; i++) {
        // 核心点
        if (dom.childNodes[i].attributes && dom.childNodes[i].attributes["id"] && dom.childNodes[i].id.indexOf(key) !== -1) {
            collectArray.push(dom.childNodes[i]);
        }
        if (dom.childNodes[i].childNodes.length > 0) {
            let res = queryIdNode(dom.childNodes[i], key);
            for (var k = 0; k < res.length; k++) {
                collectArray.push(res[k]);
            }
        }
    }
    return collectArray;
}
效果
<html>
<body>
<div>
    <div></div>
    <div>
        <span id="test1">
            233
            <span class="demo1">666</span>
        </span>
        <span id="test2">
            <span id="test3">666</span>
            <span class="demo1">888</span>
            <span class="demo2">999</span>
        </span>
    </div>
</div>
</body>
<script>
...
...
...
console.log(queryIdNode(document.body, 'test')); // [span#test1, span#test2, span#test3]
console.log(queryClassNode(document.body, 'demo')); // [span.demo1, span.demo1, span.demo2]
</script>
</html>

补充点:
确实可以直接用 querySelectorAll 吧,配合属性选择器,反而更方便。上面的js实现方法,就留着不删了

document.querySelectorAll('[id^=test]')

document.querySelectorAll('[class^=demo]')

相关文章

  • DOM和BOM的基础知识

    目录 js组成 DOMDOM是什么DOM节点是什么查找DOM节点,查看DOM节点的属性和样式添加DOM节点删除DO...

  • js和JQuery对DOM增删改查的对比

    查找 JS方法1 查找节点1 查找节点组1 JS方法2 查找节点2 查找节点组2 小结 根据JS和JQuery的对...

  • DOM节点

    DOM节点 js获取元素及其属性 1.访问或获取节点 getElementById(); getElementsB...

  • js获取节点的方法

    js获取节点的方法 1.document.getElementById("id名"); 通过特定的id获取节点 2...

  • CSS选择器

    1.class 和 id 的使用场景? id选择器主要是通过DOM节点的ID获取节点;类选择器主要是DOM中的类名...

  • 前端面试-vue汇总

    一、MVVM 1.背景:用js操纵html 1.1. 直接用js操纵dom节点,原生API var dom = d...

  • 虚拟 DOM 的原理是什么?

    概念 React 用 JS 对象来模拟 DOM 节点,然后将其渲染成真实的 DOM 节点。 用 JSX 语法写出来...

  • jQuery笔记2 常用DOM方法记录

    查找节点 获取页面中的某个指定节点 attr方法 attr方法是用来获取节点的某个属性的,类似于js的getAtt...

  • 原生JS封装查找元素节点的方法

    原生JS封装查找父元素节点的方法 原生JS封装查找兄弟元素节点的方法 插入子节点方法 12 2 divsiv...

  • Vue底层原理

    传统开发 在最初的前端开发中,为了完成某个功能,我们需要通过js在HTML页面中获得dom节点,随后获得dom节点...

网友评论

      本文标题:js用前缀名查找class或id节点,js模糊查询某个dom节点

      本文链接:https://www.haomeiwen.com/subject/mpqeddtx.html