js通过classname来获取元素的方法


Posted in Javascript onNovember 24, 2016

原生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来获取元素的方法全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
不用ajax实现点击文字即可编辑的方法
Dec 16 Javascript
Javascript优化技巧(文件瘦身篇)
Jan 28 Javascript
javascript实现的距离现在多长时间后的一个格式化的日期
Oct 29 Javascript
jQuery 一个图片切换的插件
Oct 09 Javascript
js获取判断上传文件后缀名的示例代码
Feb 19 Javascript
使用jquery修改表单的提交地址基本思路
Jun 04 Javascript
AngularJS学习笔记之TodoMVC的分析
Feb 22 Javascript
浅谈jquery.fn.extend与jquery.extend区别
Jul 13 Javascript
jquery实现页面加载效果
Feb 21 Javascript
使用javascript函数编写简单银行取钱存钱流程
May 26 Javascript
vue-router传参用法详解
Jan 19 Javascript
js实现扫雷源代码
Nov 27 Javascript
jQuery实现checkbox列表的全选、反选功能
Nov 24 #Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
Nov 24 #Javascript
概述javascript在Google IE中的调试技巧
Nov 24 #Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
Nov 23 #Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
Nov 23 #Javascript
值得分享的Bootstrap Table使用教程
Nov 23 #Javascript
JavaScript面试题(指针、帽子和女朋友)
Nov 23 #Javascript
You might like
php打造属于自己的MVC框架
2012/03/07 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
Js放到HTML文件中的哪个位置有什么区别
2013/08/21 Javascript
jQuery实现瀑布流的取巧做法分享
2015/01/12 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
Python Deque 模块使用详解
2014/07/04 Python
python使用Tkinter显示网络图片的方法
2015/04/24 Python
Python聚类算法之基本K均值实例详解
2015/11/20 Python
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
Python实现自动上京东抢手机
2018/02/06 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
Python数据预处理之数据规范化(归一化)示例
2019/01/08 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
Django框架视图介绍与使用详解
2019/07/18 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
如何定义一个可复用的服务
2014/09/30 面试题
挂职思想汇报
2013/12/31 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
2014年商场工作总结
2014/11/22 职场文书
迟到检讨书范文
2015/01/27 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers