首页 > 代码库 > js模拟高级语言的重载

js模拟高级语言的重载

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模拟高级语言的重载