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不同页面传值的改进版
Sep 30 Javascript
编写Js代码要注意的几条规则
Sep 10 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
Dec 03 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
Jun 08 Javascript
JavaScript中获取时间的函数集
Aug 16 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
Sep 09 Javascript
浅析Node.js:DNS模块的使用
Nov 23 Javascript
对类Vue的MVVM前端库的实现代码
Sep 07 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
Jan 19 Javascript
详解如何运行vue项目
Apr 15 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
Apr 30 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
Feb 10 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 zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
php实现zip文件解压操作
2015/11/03 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
javascript 跳转代码集合
2009/12/03 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
Node.js中sequelize时区的配置方法
2017/12/10 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
node Buffer缓存区常见操作示例
2019/05/04 Javascript
python实现rest请求api示例
2014/04/22 Python
使用Python编写爬虫的基本模块及框架使用指南
2016/01/20 Python
Python 多线程的实例详解
2017/09/07 Python
Windows下安装Scrapy
2018/10/17 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
简单的Python调度器Schedule详解
2019/08/30 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
TCP/IP模型的分界线
2012/12/01 面试题
初中三年学生的学习自我评价
2013/11/13 职场文书
运动会开幕式邀请函
2014/02/03 职场文书
开学典礼演讲稿
2014/05/23 职场文书
2014年教研组工作总结
2014/11/26 职场文书
法律意见书范文
2015/06/04 职场文书
婚礼双方父亲致辞
2015/07/27 职场文书
教师个人教学反思
2016/02/23 职场文书