码迷,mamicode.com
首页 > 编程语言 > 详细

js模拟高级语言的重载

时间:2016-09-12 00:53:28      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:

js以递归的方式模拟高级语言的重载,我以添加元素节点为例子:

//现有的子元素之前插入一个新的子元素
var before = function(elem,newElement,targetElement){
    if(targetElement === undefined)
        return before(newElement ? newElement.parentNode : null,elem,newElement);
    //兼容ie7以下目标节点为空报错的问题
    if(!targetElement)
        return elem ? elem.appendChild(newElement) : null;
    return elem.insertBefore(newElement,targetElement);
};
//现有的子元素之后插入一个新的子元素
var after = function(elem,newElement,targetElement){
    if(targetElement === undefined){
        return after(newElement ? newElement.parentNode : null,elem,newElement);
    }
    
    return !elem || (elem.lastElementChild || elem.lastChild) == targetElement ? 
        // 如果最后的节点是目标元素,则直接添加。因为默认是最后 
        before(elem,newElement,null)
    :
        //如果不是,则插入在目标元素的下一个兄弟节点 的前面。也就是目标元素的后面
        before(newElement, targetElement.nextElementSibling || targetElement.nextSibling);
};

//调用:
var elem = getElementById(‘d1‘),
    newElement = document.createElement(‘div‘),
    targetElement = elem.firstElementChild || elem.firstChild;

before(elem,newElement,targetElement);
before(newElement,targetElement);

after(elem,newElement,targetElement);
after(newElement,targetElement);

 

js模拟高级语言的重载

标签:

原文地址:http://www.cnblogs.com/gongshunkai/p/5863310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!