欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

js通过classname来获取元素

发布时间:2025/6/15 编程问答 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 js通过classname来获取元素 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

原生JS有3种方式来获取元素:

  • getElementById('id')
  • getElementsByName('name')
  • getElementsByTagName('tag')
  • getElementById是获取元素最快的方式,但我们不能给每个HTML元素都加以ID吧,所以我们需要一个很方便的通过className来获取元素

    function getElementsByClassName(className,tagName){
    var ele=[],all=document.getElementsByTagName(tagName||"*");
    for(var i=0;i<all.length;i++){
    if(all[i].className==className){
    ele[ele.length]=all[i];
    }
    }
    return ele;
    }
    console.log(getElementsByClassName("entry"));
    console.log(getElementsByClassName("entry","div"));

    实现原理很简单,通过getElementsByTagName获取到一个元素集合,如果传入了tagname这个参数就根据传入的

    tagname来获取,否则获取所有的元素,然后再一个一个元素来匹配classname是否相等..

    上面这个方法很粗糙,能实现我们的基本需求,如果我们要获取的元素有多个 classname怎么办?

    明显通过className==是不行了


    所以我们只要把上面两篇文章的hasclass函数搬过来就OK了,我们再次来改造下我们的getElementsByClassName函数

    function getElementsByClassName(className,tagName){
    var ele=[],all=document.getElementsByTagName(tagName||"*");
    for(var i=0;i<all.length;i++){
    if(all[i].className.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'))){
    ele[ele.length]=all[i];
    }
    }
    return ele;
    }

    这样就能处理一个元素含有多个classname的情况了

    总结

    以上是生活随笔为你收集整理的js通过classname来获取元素的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。