JavaScript 如何获取整个页面使用的所有 class

<!DOCTYPEhtml><htmllang="cmn-Hans"><head><metacharset="UTF-8"><title>Document</title>... <!DOCTYPE html>
<html lang="cmn-Hans">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<header class="claheader posabs">
<nav class="claheader clanav disflex"></nav>
</header>
<footer class="clafooter disblock">
<ul class="clafooter claul padz">
<li class="pasde"></li>
</ul>
</footer>
</body>
</html>

如以上页面包含了 claheader, posabs, clanav, disflex, clafooter, disblock, claul, padz, pasde,共九个 class,如何使用 JavaScript 获取,又如何更改 class 的属性?
展开
 我来答
hanlidongyang
2016-12-22 · TA获得超过885个赞
知道小有建树答主
回答量:1109
采纳率:50%
帮助的人:502万
展开全部

纯js源码如下:

<!DOCTYPE html>
<html lang="cmn-Hans">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<header class="claheader posabs">
<nav class="claheader clanav disflex"></nav>
</header>
<footer class="clafooter disblock">
<ul class="clafooter claul padz">
<li class="pasde"></li>
</ul>
</footer>
</body>
</html>
<script>

//获取所有的className
var classNames=getAllClassName();
console.log(classNames);
//获取指定className的节点
var eles=getElementsByClassName("claheader");
console.log(eles);
//修改节点的className
//把claheader替换为newclass
for(var i=0;i<eles.length;i++){
var ele=eles[i];
ele.className=ele.className.replace("claheader","newclass");
}

/**
 * 获取指定className的节点
 * @param  {[type]} name [description]
 * @return {[type]}      [description]
 */
function getElementsByClassName(name){
var result=[];
var body=document.body;
getElementByClassName(body);
function getElementByClassName(ele){
var s=ele.className||"";
if(s!=""&&s.indexOf(name)!=-1){
result.push(ele);
}
var childs=ele.childNodes;
for(var i=0;i<childs.length;i++){
getElementByClassName(childs[i]);
}
}
return result;
}
/**
 * 遍历DOM,获取所有节点的className,重复的只记录一遍。
 */
function getAllClassName(){
var result=[];
var body=document.body;
getClassName(body);
function getClassName(ele){
var s=ele.className||"";
if(s!=""){
var arr=s.split(" ");
for(var i=0;i<arr.length;i++){
var name=arr[i];
if(name!=""&&result.indexOf(name)==-1){
//console.log(name);
result.push(name);
}
}
}
var childs=ele.childNodes;
for(var i=0;i<childs.length;i++){
getClassName(childs[i]);
}
}
return result;
}

</script>

用jquery会很简单。


推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式