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 相关文章推荐
推荐40个非常优秀的jQuery插件和教程【系列三】
Nov 09 Javascript
Window.Open如何在同一个标签页打开
Jun 20 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
May 25 Javascript
基于jQuery实现在线选座之高铁版
Aug 24 Javascript
js点击按钮实现带遮罩层的弹出视频效果
Dec 19 Javascript
使用Vue.js创建一个时间跟踪的单页应用
Nov 28 Javascript
原生js实现可拖拽效果
Feb 28 Javascript
React-router4路由监听的实现
Aug 07 Javascript
bootstrap table表格插件之服务器端分页实例代码
Sep 12 Javascript
vue组件从开发到发布的实现步骤
Nov 11 Javascript
vue路由实现登录拦截
Mar 24 Vue.js
javascript代码简写的几种常用方式汇总
Aug 23 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
玩家交还《星际争霸》原始码光盘 暴雪报以厚礼
2017/05/05 星际争霸
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
PHP如何得到当前页和上一页的地址?
2006/11/27 PHP
thinkphp控制器调度使用示例
2014/02/24 PHP
php获取域名的google收录示例
2014/03/24 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
JS实现3D图片旋转展示效果代码
2015/09/22 Javascript
Angular2入门--架构总览
2017/03/29 Javascript
Vue封装的可编辑表格插件方法
2018/08/28 Javascript
Nodejs使用Mongodb存储与提供后端CRD服务详解
2018/09/04 NodeJs
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
浅析Python的Django框架中的Memcached
2015/07/23 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
Flask之flask-script模块使用
2018/07/26 Python
在pycharm中python切换解释器失败的解决方法
2018/10/29 Python
使用pandas读取文件的实现
2019/07/31 Python
python psutil监控进程实例
2019/12/17 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
python使用smtplib模块发送邮件
2020/12/17 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
中学生期中自我鉴定
2014/04/20 职场文书
园艺师求职信
2014/04/27 职场文书
法院授权委托书范文
2014/08/02 职场文书
2014年转正工作总结
2014/11/08 职场文书
保留意见审计报告
2015/06/05 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python
Python基础之元编程知识总结
2021/05/23 Python