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 相关文章推荐
javascript fullscreen全屏实现代码
Apr 09 Javascript
js截取函数(indexOf,join等)
Sep 01 Javascript
浅析JQuery中的html(),text(),val()区别
Sep 01 Javascript
JavaScript实现找出数组中最长的连续数字序列
Sep 03 Javascript
Boostrap入门准备之border box
May 09 Javascript
全面解析Bootstrap中nav、collapse的使用方法
May 22 Javascript
javaScript日期工具类DateUtils详解
Dec 08 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
Dec 20 Javascript
JavaScript设计模式之代理模式简单实例教程
Jul 03 Javascript
Vue.js组件高级特性实例详解
Dec 24 Javascript
微信小程序仿今日头条导航栏滚动解析
Aug 20 Javascript
vue移动端下拉刷新和上滑加载
Oct 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
JavaScript delete操作符应用实例
2009/01/13 Javascript
js实现仿百度瀑布流的方法
2015/02/05 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
2016/01/25 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
AngularJS使用ng-repeat指令实现下拉框
2016/08/23 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
JS中用三种方式实现导航菜单中的二级下拉菜单
2016/10/31 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
12步教你理解Python装饰器
2016/02/25 Python
tornado 多进程模式解析
2018/01/15 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
Python中的函数式编程:不可变的数据结构
2018/10/08 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
浅析matlab中imadjust函数
2020/02/27 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
Python自动化操作实现图例绘制
2020/07/09 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
2014年学生工作总结
2014/11/20 职场文书
西双版纳导游词
2015/02/03 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
乡镇团代会开幕词
2016/03/04 职场文书
2016年全国爱牙日宣传活动总结
2016/04/05 职场文书
python保存图片的四个常用方法
2022/02/28 Python