zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    poj 2262 筛法求素数(巧妙利用数组下标!)
    BestCoder Round #65 (ZYB's Premutation)
    BestCoder Round #65 (ZYB's Game)
    BestCoder Round #65 (ZYB's Biology)
    筛法求素数
    常见OJ提交结果对照表
    CSS3伸缩盒Flexible Box
    移动开发屏幕适配分析
    用PHP抓取页面并分析
    安装最新版本的PHPUnit后,不能使用
  • 原文地址:https://www.cnblogs.com/gongshunkai/p/5863310.html
Copyright © 2011-2022 走看看