不能获取class为多个的情况

function getByClass(parent,cls){
var res=[];
var ele=parent.getElementsByTagName("*");
for(var i=0;i<ele.length;i++){
if(ele[i].className==cls){
res.push(ele[i]);
}
}
return res;
}

\b 把除字母、数字、下划线的其它字符都当成是边界,当class为像abc-test时可能获取不准确

function getByClass(parent,cls){
var res=[];
var reg=new RegExp("\\b"+cls+"\\b",i);
var ele=parent.getElementsByTagName("*");
for(var i=0;i<ele.length;i++){
if(reg.test(ele[i].className)){
res.push(ele[i]);
}
}
return res;
}

有空格

function getByClass(parent,cls){
var res=[];
var reg=new RegExp(" "+cls+" ",i);
var ele=parent.getElementsByTagName("*");
for(var i=0;i<ele.length;i++){
if(reg.test(" "+ele[i].className+" ")){
res.push(ele[i]);
}
}
return res;
}

空格使用正则来处理

function getByClass(parent,cls){
var res=[];
var reg=new RegExp('(^|\\s)'+cls+'($|\\s)','i');
var ele=parent.getElementsByTagName("*");
for(var i=0;i<ele.length;i++){
if(reg.test(ele[i].className)){
res.push(ele[i]);
}
}
return res;
}

结合getElementsByClassName()

function getByClass(parent,cls){
if(parent.getElementsByClassName){
return parent.getElementsByClassName(cls);
}
else{
var res=[];
var reg=new RegExp(" "+cls+" ","i");
var ele=parent.getElementsByTagName("*");
for(var i=0;i<ele.length;i++){
if(reg.test(" "+ele[i].className+" ")){
res.push(ele[i]);
}
}
return res;
}
}

About getByClass的更多相关文章

  1. 原生js实现增加(addclass),删除(removeclass),判断是否存在(hasclass),如果存在删除,如果不存在添加(toggleclass)和获取类名(getbyclass)的方法

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. getbyclass

    其实以前我偷偷学习正则表达式的时候,写过一个getbyclass的方法,最近翻了翻到处都是错,或者好多重复的,没有用的 代码,于是显得没事我就把这个精简了一下,其实这个方法现在我觉得也是有问题的,问题 ...

  3. 原生JavaScript实现的addclass,removeclass,hasclass,toggleclass,getbyclass

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  4. 封装getByClass

    方法一:(普通版),获取单一的class: function getByClass(oParent, sClass) { var aResult = []; var aEle = oParent.ge ...

  5. 正则版----getByClass函数

    function getByClass(oParent,sClass){ var arr = []; var aEle = oParent.getElementsByTagName('*'); //v ...

  6. js中getByClass()函数

    js中getByClass()函数进化史 对于js来说,我想每一个刚接触它的人都应该会抱怨:为什么没有一个通过class来获取元素的方法.尽管现在高版本的浏览器已经支持getElementsByCla ...

  7. js getByClass函数封装

    function getByClass(oParent, sClass) { var aEle=oParent.getElementsByTagName('*'); var aResult=[]; v ...

  8. js 中class选择器,addClass,removeClass,hasClass,toggleClass,getByClass

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...

  9. 原生JS编写getByClass、addClass、removeClass、hasClass

    前言: 年后换了工作,在现在的公司写交互主要使用JS原生:刚刚入门前端的时候写交互一直用的原生JS,虽然用的不怎么样.后来去之前的公司之后,leader主张把jQuery用好,JS原生自然就熟练了:一 ...

  10. 封装getByClass(JS获取class的方法封装为一个函数)

    获取方法一(普通版) 获取单一的class: function getByClass(oParent, sClass) {//两个形参,第一个对象oParent 第二个样式名class var aEl ...

随机推荐

  1. Redis(十):使用RedisTemplate执行Redis脚本

    对于Redis脚本使用过的同学都知道,这个主要是为了防止竞态条件而用的.因为脚本是顺序执行的.(不用担心效率问题)比如我在工作用,用来设置考试最高分. 如果还没有用过的话,先去看Redis脚本的介绍, ...

  2. IOS中公布应用程序,进度条一直不走怎么处理

    在IOS中公布应用程序非常是喜闻乐见. 近期1周.我更新了6次版本号.可是时不时的会卡住,进度条不走. 最后总结了几个原因. 1.在公布前你要确认自己的证书是否配置正确 2.DNS域名server有没 ...

  3. ThinkPHP3.1在多数据库连接下存储过程调用bug修正

    最近使用ThinkPHP3.1进行一个项目的开发,由于该项目需要连接多台不同的数据库,所以使用如下配置方法: <?php return array( //'配置项'=>'配置值' //数据 ...

  4. 【puppeteer+Node.js安装环境】之WebStorm编辑器运行失败问题:Error: Cannot find module 'puppeteer'并且代码出不来“asnyc”标识以及有红色波浪线解决办法

    现象一: module.js:557     throw err;     ^ Error: Cannot find module 'puppeteer'  at Function.Module._r ...

  5. 【demo练习四】:WPF用户控件案例

    首先,新建vs中“用户控件(WPF)”,右键项目名 =>"添加"按钮 => 选择“新建项”. 然后选择“用户控件(WPF)” => 起名字 => 点击“添加 ...

  6. erlang的undefined macro 'MODULE',头一行编译通不过的问题

    前言:对于erlang的编译有很多方式,rebar,makefile文件 还是对于单个文件的erlc编译等,但不管何种方式,一个模块的第一行就编译不过去,实在让人纠结... 1)问题上述: 在技术交流 ...

  7. 用HttpClient模拟HTTP的GET和POST请求(转)

    本文转自:http://blog.csdn.net/xiazdong/article/details/7724349 一.HttpClient介绍   HttpClient是用来模拟HTTP请求的,其 ...

  8. 创业做移动互联网App的4个注意事项

    导语:大多数人对于做App还是比較盲目,有个想法立刻就去做了.做出来了才忽然想到市场和推广.我把做移动 互联网App注意事项情给大家列下. 文| 移动互联网李建华 近 来,常常有人问我关于推广的事情, ...

  9. 【BZOJ1146】[CTSC2008]网络管理Network 树状数组+DFS序+主席树

    [BZOJ1146][CTSC2008]网络管理Network Description M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个部门之间协同工 ...

  10. Filebeat+ELK

    Filebeat+ELK filebeat是logstash的升级版,从功能上来说肯定不如logstash,但是logstah比较耗费资源: filebeat安装 暂时依托于window系统 下载fi ...