1、 封装函数,返回元素e的第n层祖先元素节点
<script>
function reParent(elem,n){
while(elem && n){
elem = elem.parentNode;
n--;
}
return elem;
}
var i =document.getElementsByTagName('i')[0];
2、封装函数,返回元素e的第n个兄弟元素节点,n为正,返回后面的兄弟元素节点,n为负,返回前面的,n为0,返回自己
function reSibing(elem,n){
while (n) {
if(n > 0){
elem = elem.nextElementSibling;
n--;
}
else{
elem = elem.previousElementSibling;
n++;
}
}
return elem;
}
var em = document.getElementsByTagName('em')[0];
3、 定义函数,封装myChildren功能,解决以前部分浏览器的兼容性问题。(即,不使用children属性)
Element.prototype.myChildren = function(){
var child = this.childNodes;
var arr = [],
len = child.length;
for(var i = 0 ;i < len;i++){
if(child[i].nodeType == 1){
arr.push(child[i]);
}
}
return arr;
}
var p = document.getElementsByTagName('p')[0];
4、 自己封装hasChildren()方法,返回是否有子元素节点(在运行链上编程,
Element.prototype),不可用children属性*/
Element.prototype.hasChildren = function(){
var child = this.childNodes;
var len = child.length;
for(var i = 0 ;i < len;i++){
if(child[i].nodeType == 1){
return true;
}
}
return false;
}
5、封装函数 insertAtfer()。功能类似insertBefore() 写在原型上
Element.prototype.insertAtfer = function(elem,elem1){
var parent = elem1.parentNode;
if(parent.lastChild == elem1){
parent.appendChild(elem);
}
else {
parent.insertBefore(elem, elem1.nextSibling);
}
}
var div = document.getElementsByTagName("div")[0];
var strong = document.getElementsByTagName("strong")[0];
var span = document.createElement("span");
div.insertAtfer(span,strong)