Javascript获取class的值问题

coolgyy 2012-09-07 09:55:13

//className是传进来的类名称,tag是为了加强过滤,比如所有td下面的class或者input下面的class
function getElementByClassName(className,tag)
{
//获取所有传进来的标签元素的节点
var allTags = document.getElementsByTagName(tag);
var matchingElements = new Array();
//对className做了个正则表达式
className = className.replace(/\-/g,"\\-");
var regex = new RegExp("(|\\s)"+className+"(\\s|$)");

var element;
//对所有的tag里面进行循环
for(var i=0;i<allTags.length;i++)
{
element = allTags[i];
if(regex.test(element.className))
{
matchingElements.push(element);
}
}
return matchingElements;
}




//对className做了个正则表达式
className = className.replace(/\-/g,"\\-");
var regex = new RegExp("(|\\s)"+className+"(\\s|$)");
能不能特别解释下这个部分的内容啊?



跪求~~~~~~~
...全文
518 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
suweibaobao 2013-02-03
  • 打赏
  • 举报
回复
className = className.replace(/\-/g,"\\-"); 因为className要在var regex = new RegExp("(|\\s)"+className+"(\\s|$)");中构成正则模式,所以要对className中的-进行转义吧
一起混吧 2012-09-07
  • 打赏
  • 举报
回复
- 不是元字符,因此不需要转义
coolgyy 2012-09-07
  • 打赏
  • 举报
回复
那能问下
className = className.replace(/\-/g,"\\-");
这个多余的是什么意思呢?
那2个符号分别代表啥?
我去查了下正则表达式的API好像没有这种表示的啊
一起混吧 2012-09-07
  • 打赏
  • 举报
回复
\\s 匹配空白
$ 匹配结尾
"(|\\s)" 就是说 className 前面可以有一个空白字符,或者没有
"(\\s|$)" 是指 className 后面可以有一个空白字符,或者结尾
coolgyy 2012-09-07
  • 打赏
  • 举报
回复
晕啊···我就是想问下var regex = new RegExp("(|\\s)"+className+"(\\s|$)");
这句话是什么意思;"(|\\s)" "(\\s|$)"这2个符号是什么意思;回答那么空洞谁会懂啊
泡泡鱼_ 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
className是js使用的,html只有class
[/Quote]
+1
孟子E章 2012-09-07
  • 打赏
  • 举报
回复
className是js使用的,html只有class
coolgyy 2012-09-07
  • 打赏
  • 举报
回复
匹配的原理能否解释下啊????
一起混吧 2012-09-07
  • 打赏
  • 举报
回复
第一句是多余的

第二句就是匹配 class 呀

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧