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 DOM 添加事件
Feb 14 Javascript
js 判断脚本加载完毕的代码
Jul 13 Javascript
js修改table中Td的值(定义td的双击事件)
Jan 10 Javascript
Extjs Gird 支持中文拼音排序实现代码
Apr 15 Javascript
JS解析XML文件和XML字符串详解
Apr 17 Javascript
jQuery获取页面元素绝对与相对位置的方法
Jun 10 Javascript
浅谈javascript中replace()方法
Nov 10 Javascript
vue中进行微博分享的实例讲解
Oct 14 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
Apr 17 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
Jul 20 Javascript
Openlayers实现点闪烁扩散效果
Sep 24 Javascript
vue使用echarts画组织结构图
Feb 06 Vue.js
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开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
讲解WordPress开发中一些常用的debug技巧
2015/12/18 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
PHP中mysqli_get_server_version()的实例用法
2020/02/03 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
jquery 鼠标滑动显示详情应用示例
2014/01/24 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
js 开发之autocomplete=&quot;off&quot;在chrom中失效的解决办法
2017/09/28 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
使用Pyrex来扩展和加速Python程序的教程
2015/04/13 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
10分钟理解CSS3 Grid布局
2018/12/20 HTML / CSS
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
汽车销售求职自荐信
2013/10/01 职场文书
个人自我评价范文
2014/02/05 职场文书
清明节网上祭英烈活动总结
2014/04/30 职场文书
专题组织生活会方案
2014/06/15 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
工程承包协议书
2014/10/20 职场文书
2014年度考核工作总结
2014/12/24 职场文书
教师年终个人总结
2015/02/11 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
2007年老电脑安装win11会怎么样? 网友实测win11在老电脑运行良好
2021/11/21 数码科技
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技