今天写了一个getNextSibling()函数,不单只适合通过id来获取,而且还可以通过class来获取,不过前提是要再写一个getElementsByClassName(),因为原生的js是没有getElementsByClassName()。

HTML代码

<div class="a" id="aa"><p id="p">1</p></div>
<div id="b">2</div>
<div id="c" onclick="check()">3</div>

javascript代码

function getElementsByClassName(str,root,tag){//自定义封装getElementsByClassName()函数
	if(root){
		root = typeof root == "string" ? document.getElementById(root) : root;
	}else{
		root = document.body;
	}
	var tag = tag || "*";
	var ele = root.getElementsByTagName(tag) , arr=new Array();
	for(var i = 0 , k = ele.length ; i < k ; i++ ){
		for(var j = 0 , l = ele[i].className.split(" ") ; j < l.length ; j++){
			if(str == l[j]){
				arr.push(ele[i]);
				break;
			}
		}
	}
	return arr;
}
function getNextSibling(node){/*自定义封装getNextSibling()函数,
                                输入参数node必须带"."的className或带"#"的id*/
	if(typeof node == "string"){
		if(node.match(/^#/)){
			var nodestr = node.toString().substr(1);
			node = document.getElementById(nodestr);
		}else{
			var nodestr = node.toString().substr(1);
			node = getElementsByClassName(nodestr)[0];
		}
	}
	var nextNode = node.nextSibling;
	if(!nextNode) return null;
	if((nextNode.nodeType != 1) && (nextNode.nextSibling)){
		nextNode = nextNode.nextSibling;
	}
	return nextNode;
}
function check(){
	alert(getNextSibling("#aa").id)
}
 

通过className来获取html元素是很方便的,所以基本上任何js库都会有getElementsByClassName()函数。

但是原生的js并不支持getElementsByClassName(),那当我们不使用任何js库的时候怎么办呢?唯有自己写一个getElementsByClassName()函数出来。注意:自定义的getElementsByClassName()函数不能用document

function getElementsByClassName(str,root,tag){//自定义封装getElementsByClassName()函数
	if(root){
		root = typeof root == "string" ? document.getElementById(root) : root;
	}else{
		root = document.body;
	}
	var tag = tag || "*";
	var ele = root.getElementsByTagName(tag) , arr=new Array();
	for(var i = 0 , k = ele.length ; i < k ; i++ ){
		for(var j = 0 , l = ele[i].className.split(" ") ; j < l.length ; j++){
			if(str == l[j]){
				arr.push(ele[i]);
				break;
			}
		}
	}
	return arr;
}
© 2012 Hedgehog Suffusion theme by Sayontan Sinha