这个有一定作用,原因是ById查询,面太窄,id单独也唯一,而TagName又太宽,而且是按照元素性质来查询的,比如<a>,比如<p>标签。
模仿如下:
<script type="text/javascript">
var all=document.getElementsByTagName("*");
function getElementsByClassName(className){
var tmp=new Array( );
for(i=0;i<all.length;i++){
if(all[i].className==className){ // 或者改成 all[i].className.indexOf(className) != -1
tmp[tmp.length]=all[i];
continue; // 这里的continue是冗余的,因为本来后面就没东西啦,要开始下一个循环。。可以删除掉
}
}
return tmp;
}
选className作为参数传入,先取到页面所有元素,定义一个临时数组,遍历,如果元素className与查询参数相同,则丢到临时数组里,访问tmp[1].className可以得到这个查询参数,表明成功。
注:
(1)访问className不可用getAttribute("class")的形式,只能object.className
(2)tmp[tmp.length]一直指向数组的最后一个位置
(3)直接document.write(tmp)的话会得到[object],[object],[object] ...这样形式的值,因为无论是.getElementsByTagName还是ById,ByClassName返回的每个数组元素个体都是object。