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 相关文章推荐
悬浮数字的实现案例
Feb 19 Javascript
jQuery的cookie插件实现保存用户登陆信息
Apr 15 Javascript
javascript学习笔记(三)BOM和DOM详解
Sep 30 Javascript
基于jQuery实现自动轮播旋转木马特效
Nov 02 Javascript
jQuery 移动端artEditor富文本编辑器
Jan 11 Javascript
JS实现的tab切换选项卡效果示例
Feb 28 Javascript
jquery平滑滚动到顶部插件使用详解
May 08 jQuery
javascript中new Array()和var arr=[]用法区别
Dec 01 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
Jan 02 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
Mar 06 jQuery
Node.js 实现远程桌面监控的方法步骤
Jul 02 Javascript
利用layer实现表单完美验证的方法
Sep 26 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下过滤HTML代码的函数
2007/12/10 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
WEB前端设计师常用工具集锦
2014/12/09 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
vuex操作state对象的实例代码
2018/04/25 Javascript
webpack4之SplitChunksPlugin使用指南
2018/06/12 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
layui添加动态菜单与选项卡
2019/07/26 Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
2019/10/28 Javascript
在Python中操作字符串之replace()方法的使用
2015/05/19 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
Python 文件操作的详解及实例
2017/09/18 Python
Python双向循环链表实现方法分析
2018/07/30 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
Python设计模式之观察者模式原理与用法详解
2019/01/16 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
用Python实现将一张图片分成9宫格的示例
2019/07/05 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
幼儿园教师的考核评语
2014/04/18 职场文书
起诉书格式范文
2015/05/20 职场文书
关于幸福的感言
2015/08/03 职场文书
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python
Go语言grpc和protobuf
2022/04/13 Golang