- function getElementsByClassName(clsName,htmltag){
- var arr = new Array();
- var elems = document.getElementsByTagName(htmltag);
- for ( var cls, i = 0; ( elem = elems[i] ); i++ ){
- if ( elem.className == clsName ){ //只能取到className完全相等的情况,为考虑有多个class的情况
- arr[arr.length] = elem;
- }
- }
- return arr;
- }
-------------------------实例------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> node list </title>
</head>
<body>
<div id="theobj">
<li class="aa" id="0">0</li>
<li class="aa" id="1">1</li>
<li class="aa" id="2">2</li>
<li class="aa" id="3">3</li>
<li class="aa" id="4">4</li>
<span class="aa">span0</span>
<span class="aa">span1</span>
<span class="aa">span2</span>
<span class="aa">span3</span>
<span class="aa">span4</span>
</div>
<div id="theobj1">
<li class="aa" id="10">k0</li>
<li class="aa" id="11">k1</li>
<li class="aa" id="12">k2</li>
<li class="aa" id="13">k3</li>
<li class="aa" id="14">k4</li>
<span class="aa" id="20">sp1an0</span>
<span class="aa" id="21">sp23an1</span>
<p class="aa" id="22">sp3an2</p>
<span class="aa" id="23">sp4an3</span>
<span class="aa" id="24">sp5an4</span>
</div>
<div class="bb cc" id="el">23 2eell 23</div>
<script language="Javascript">
function $id(id) {return document.getElementById(id);}
var elems=document.getElementsByTagName('li');
for (var i=0;i<elems.length ; i++ )
{
elems[i].i=i+1;
elems[i].onclick=function() {
alert(this.i+'vs'+this.innerHTML);
}
}
alert(getElementsByClassName('aa','span','theobj1')[3].innerHTML);
//alert(getElementsByClassName1('aa','li')[7].innerHTML);
//从root的节点htmltag中取含有clsName的节点组成一个数组
function getElementsByClassName(clsName,htmltag,root){
var arr = new Array();
var obj = document.getElementById(root);
var elems = obj.getElementsByTagName(htmltag);
for ( var cls, i = 0; ( elem = elems[i] ); i++ ){
if ( hasClass(clsName,elem) ) {
arr[arr.length] = elem;
}
}
return arr;
}
/*
从页面中取所有含有clsName的htmltag节点组成一个数组。
*/
function getElementsByClassName1(clsName,htmltag){
var arr = new Array();
var elems = document.getElementsByTagName(htmltag);
for ( var cls, i = 0; ( elem = elems[i] ); i++ ){
if ( hasClass(clsName,elem) ){
arr[arr.length] = elem;
}
}
return arr;
}
/*
判断对象elem中是否含有className:clsName,
有则返回1,否则返回0;
*/
function hasClass(clsName,elem) {
var re;
var str = elem.className;
re = new RegExp('(?:^|\\s+)' + clsName + '(?:\\s+|$)') ;
return re.test(str) ? 1 : 0 ;
}
</script>
</body>
</html>

