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 相关文章推荐
stream.js 一个很小、完全独立的Javascript类库
Oct 28 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
Apr 08 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
Apr 18 Javascript
为指定的元素添加遮罩层的示例代码
Jan 15 Javascript
使用jQuery时Form表单元素ID和name命名大忌
Mar 06 Javascript
jquery解决客户端跨域访问问题
Jan 06 Javascript
jQuery中bind()方法用法实例
Jan 19 Javascript
解析JavaScript中的字符串类型与字符编码支持
Jun 24 Javascript
JavaScript中boolean类型之三种情景实例代码
Nov 21 Javascript
30分钟快速实现小程序语音识别功能
Nov 27 Javascript
详解如何更好的使用module vuex
Mar 27 Javascript
js实现点赞效果
Mar 16 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知道与问问的采集插件代码
2010/10/12 PHP
浅析is_writable的php实现
2013/06/18 PHP
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
destoon调用discuz论坛中带图片帖子的实现方法
2014/08/21 PHP
php以post形式发送xml的方法
2014/11/04 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
php实现图片局部打马赛克的方法
2015/02/11 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
深入理解Python3中的http.client模块
2017/03/29 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
Python range与enumerate函数区别解析
2020/02/28 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
.NET是怎么支持多种语言的
2015/02/24 面试题
技术员个人工作总结
2015/03/03 职场文书
关于 Python json中load和loads区别
2021/11/07 Python