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 相关文章推荐
jquery的颜色选择插件实例代码
Oct 02 Javascript
dotopAlert 提示用户需安装播放器的代码
Sep 17 Javascript
javascript调试之DOM断点调试法使用技巧分享
Apr 15 Javascript
超级简单实现JavaScript MVC 样式框架
Mar 24 Javascript
浅谈JavaScript中数组的增删改查
Jun 20 Javascript
js输出数据精确到小数点后n位代码
Jul 02 Javascript
JavaScript实现旋转轮播图
Aug 18 Javascript
vue组件jsx语法的具体使用
May 21 Javascript
angular4应用中输入的最小值和最大值的方法
May 17 Javascript
简单分析js中的this的原理
Aug 31 Javascript
Vue实现验证码功能
Dec 03 Javascript
JavaScript实现放大镜效果代码示例
Apr 29 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
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
新浪新闻小偷
2006/10/09 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
php采用session实现防止页面重复刷新
2015/12/24 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
javascript跨域刷新实现代码
2011/01/01 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
jQuery filter函数使用方法
2014/05/19 Javascript
js获取域名的方法
2015/01/27 Javascript
JavaScript原生对象之Date对象的属性和方法详解
2015/03/13 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
微信小程序之分享页面如何返回首页的示例
2018/03/28 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
Python内置函数之filter map reduce介绍
2014/11/30 Python
Python中的pass语句使用方法讲解
2015/05/14 Python
Python实现的桶排序算法示例
2017/11/29 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
基于django传递数据到后端的例子
2019/08/16 Python
浅析python标准库中的glob
2020/03/13 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
2020/04/09 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
安全标语大全
2014/06/10 职场文书
2014年残联工作总结
2014/11/21 职场文书
电力培训学习心得体会
2016/01/11 职场文书
python实现简易名片管理系统
2021/04/11 Python
用JS创建一个录屏功能
2021/11/11 Javascript
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server