首页 > 其他分享 >js用前缀名查找class或id节点,js模糊查询某个dom节点

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

时间:2023-04-05 23:33:29浏览次数:32  
标签:dom collectArray js key childNodes 节点

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>

标签:dom,collectArray,js,key,childNodes,节点
From: https://www.cnblogs.com/tianmiaogongzuoshi/p/17291302.html

相关文章

  • 第十九篇 JSON 、XML、E4X
    bycaixin深圳JSON定义JSON:JavaScriptObjectNotation【JavaScript对象表示法】JSON(JavaScriptObjectNotation,JS对象标记)是一种轻量级的数据交换格式,目前使用特别广泛。JSON是存储和交换文本信息的语法。类似XML。JSON采用完全独立于任何程序语言的文本格式,......
  • 方法定义,Date和JSON对象,及JavaScript式面向对象编程
    一.方法1.方法的定义 方法就是把函数放在对象里面,对象有两个东西:属性和方法通过对象名.方法名()使用a.第一种方法定义<script>varsetFun={name:"maming",birth:2002,//方法:被包含在对象之中age:function(){varnow=ne......
  • 第十二篇 DOM 操作 - 常用方法 和 常用属性
    bycaixin深圳DOM常用方法获取节点1、通过id号来获取元素,返回一个元素对象document.getElementById("idName")2、通过name属性获取元素,返回元素对象数组NodeListdocument.getElementsByName("name")3、通过class来获取元素,返回元素对象数组NodeList......
  • 第十三篇 DOM 补充 - 虚拟DOM 、 diff 算法 及 其他
    bycaixin深圳虚拟DOM(VirtualDOM)什么是虚拟DOM(VirtualDOM)虚拟DOM是⽤JavaScript对象表示的DOM信息和结构;当DOM更新后通过diff算法使之与真实dom保持同步虚拟DOM是一个JavsScript对象,里面包含sel选择器,data数据,text文本内容,children子标签等......
  • cpp generate random array then sort by quick sort
    #include<chrono>#include<ctime>#include<iomainp>#include<iostream>#include<random>#include<sstream>std::stringget_time_now(){std::chrono::time_point<std::chrono::high_resolution_clock>now=st......
  • 45、K8S-调度机制-节点调度之nodeAffinity、nodeName、nodeSelector
    Kubernetes学习目录1、配置解析1.1、简介我们知道,默认的调度策略有可能无法满足我们的需求,我们可以根据实际情况,定制自己的调度策略,然后整合到k8s的集群中。1.2、属性解析apiVersion:kubescheduler.config.k8s.io/v1beta1kind:KubeSchedulerConfigurationAlgorithmSou......
  • 流媒体技术学习笔记之(四)解决问题video.js 播放m3u8格式的文件,根据官方的文档添加vide
    源码地址:https://github.com/Tinywan/PHP_Experience总结:说明:测试环境:本测试全部来自阿里云直播和OSS存储点播以及本地服务器直播和点播播放器:VideoJs直播:1、阿里云直播,需要CDN设置HTTP头2、本地直播需要设置直播访问服务器的头部信息(本地为Nginx)add_header'Access-......
  • HTML5视频播放插件Video.js使用详解
    一、Video.js简介Video.js是一个开源的Html5jquery视频插件,这个插件可以用来处理Flash视频,它还是一个多平台支持的产品。Moreover,YouTube,Vimeo等等的视频都可以很好地通过这个插件来播放。这个插件还支持桌面应用程序和其它的手持设备。Video.js自动检测浏览器对HTML5的......
  • 浅谈React与SolidJS对于JSX的应用
    React将JSX这一概念深入人心。但,并非只有React利用了JSX,VUE、SolidJS等JS库或者框架都使用了JSX这一概念。网上已经有大量关于JSX的概念与形式的讲述文章,不在本文的讨论范围。前言实际上,JSX并不是合法有效的JS代码或HTML代码。目前为止也没有任何一家浏览器的引擎实现了对JSX的......
  • js的继承
    ES6的继承:子extends父,哪里继承哪里写一个super()代码:classParent{constructor(){   this.age=18}}classChildextendsParent{   //子继承父constructor(){   super()      //加上super(),要不然会报错   this.age=18}}leto=......