js根据类名获取元素的底层原理

页面代码片段

 <div></div>

<div class="box fl">这是box</div>

<div class="colorRed box3">这是box</div>

<div></div>

<div class="box">这是box</div>

<div id="text">

<div class="box">这是text内部的box</div>

<div class="box">这是text内部的box</div>

</div>

根据类名获取元素的底层原理

function getByClass(cls,ele){

  //ele参数表示本次查找的范围;是一个可选参数,默认值为body

  ele = element || document.body;

  var arr = [];

  //获取body中所有的标签

  var tags = element.getElementsByTagName(‘*‘);

  //for循环检测每一个标签的类名,是否含有box,

  for(var i=0;i<tags.length;i++){

    //我们无法直接检测所以通过split方法用空格分割字符串,并存储到classARR数组中

    var classArr = tags[i].className.split(‘ ‘);

    //对classArr数组进行循环检测 看是否含有box类名;

    for(var j=0;j<classArr.length;j++){

      if(classArr[j] === cls){

        //如果有box类名就添加到arr数组中去;

        arr.push(tags[i]);

        break;

      }

    }

  }

  return arr;

}

var text = document.getElementById(‘text‘);

console.log(getByClass(‘box‘,text));//可以传两个参数;

console.log(getByClass(text));也可以传一个参数;

原文地址:https://www.cnblogs.com/qiweile/p/9288133.html

时间: 2024-12-26 00:41:23

js根据类名获取元素的底层原理的相关文章

DOM操作通过类名获取元素

<span style="font-family:Microsoft YaHei;font-size:18px;">clsname是要获取元素的类名,parentId是要获取父元素id</span> <span style="font-family:Microsoft YaHei;font-size:18px;"> </span> <span style="font-family:Microsoft Y

JS中如何获取元素

1.通过ID名称来获取元素: document get element by id 'link' document.getElementById('link'); 事件:鼠标事件.键盘事件.系统事件.表单事件.自定义事件 例:onclick 鼠标点击事件 onmouseover 鼠标移入事件 onmouseout 鼠标移出事件 如何添加事件: 元素.事件 (元素.onmouseover) 函数:可以理解为-命令,做一些事... function(函数的关键词) 语法: function abc(

js通用方法获取元素,节点父子关系查找

/* *通用方式来获取元素 * 1.通过id来获取元素document.getElementById('属性名') * 2.通过便签名来获取元素document.getElementsByTagName('属性名');得到的是一个数组 * 3.通过class属性来获取元素有兼容性问题document.getElementsByClassName('class属性名');得到是一个数组 * 4.通过name属性来获取元素存在兼容性问题document.getElementsByName('name

js通过class获取元素

<!doctype html> <html> <head> <meta charset="utf-8"> <meta charset="utf-8"> <title>通过class获取元素</title> <style> #box div { width:100px; height:100px; border:1px solid red; margin:10px; } #

js动画之获取元素属性

首先我们要介绍一些知识 offsetWidth element.offsetWidth = width + padding + border; width 我们也知道element.style.width 这个属性一般用来修改属性,那么在获取这个属性的时候, 如果这个元素的的样式是定义在css的文件或者头样式中,都是获取不到的,只有行内样式才是获取到 <!DOCTYPE html> <html lang="en"> <head> <meta c

js学习总结----获取元素的偏移量offset

前言:以前一直是看别人写的,然后学习点东西,现在也把自己的学习记录下来,给大家一个学习的机会,欢迎大家多多评论和推荐哈,共同进步.竟然还有六个人关注我了 ,哈哈 开心.我会继续写下去的.. null和undefined都代表没有,但是null是属性存在值不存在,undefined是连这个属性都不存在 //例如 document.parentNode//浏览器天生自带的一个属性:父亲节点的属性 null (因为一个页面中的document已经是最顶级元素了,它没有父亲) document.pare

spring获取jdbc链接底层原理

获取连接池的连接二种逻辑 1.一个事务中,一个连接 (底层逻辑:threadlocal存储  里面是map: key是数据源,value:链接) map存储应该是为多数据源使用的2.没有事务的service , 从连接池获取一个释放一个,如果有10条SQL,就获取10条不同的链接 原文地址:https://www.cnblogs.com/wuhaidong/p/10067991.html

js通过class获取元素getElementsByClassName函数封装

function getElementsByClassName( parent,tag,className ){ var aEls = parent.getElementsByTagName(tag); var arr = []; for (var i = 0; i < aEls.length; i++) { var aClassName = aEls[i].className.split(' '); for (var j = 0; j < aClassName.length; j++) {

原生JavaScript根据类名获取元素

function $class(classname, parentid){ var targets=[],kids=[]; if(parentid){ var parent=document.getElementById(parentid); kids=parent.getElementsByTagName("*"); }else{ kids=document.getElementsByTagName("*"); } for(var i=0;i<kids.le