javascriptの深い探求の元素の操作
1776 ワード
getElementsByClassName:
<body >
<ul>
<li id="a1" class="a">aa</li>
<li id="a2" class="a b">aa</li>
<li id="a3" class="aa a b">aa</li>
</ul>
<div class="a">afdafaf</div>
<script type="text/javascript">
var getElementsByClassName = function(className,node,tag){
var node = node || document,
nodes,res = [],
match = false,
eles,ele,classes;
if(document.getElementsByClassName){
nodes= node.getElementsByClassName(className);
if(typeof tag !== "undefined"){
for(var i=0,len=nodes.length; i<len;i++){
var node = nodes[i];
if(tag !== "*" && node.tagName === tag.toUpperCase()){
res.push(node);
}
}
}else{
res=nodes;
}
}else{
tag = tag || "*";
classes = className.split(" ");
eles = (tag === "*" && node.all) ? node.all : node.getElementsByTagName(tag);
match = false;
//
//for(var i=eles.length; i>0; i--){
for (var i=0,elen=eles.length; i<elen; i++){
var ele = eles[i];
for(var k=0,klen=classes.length; k<klen; k++){
match =new RegExp("(^|\\s)" + classes[k] + "(\\s|$)").test((ele.className).replace(/(^\s+)|(\s+$)/,""));
if(!match) break;
}
if(match) res.push(ele);
}
}
return res;
}
// :
alert(getElementsByClassName("a",document,"li").length);