`
hrsvici412
  • 浏览: 74511 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

精通JavaScript源码1

阅读更多

去空格方法,FF把空白的处当作文本节点,nodeValue等于3,IE会忽略。

下面这个方法,如果出入的对象子节点很多的时候,效率不高。

function cleanWhitespace( element ) {
    // 如果没有提供参数,遍历整个HTML文档
    element = element || document;
    // 使用第一个child作为遍历的开始
    var cur = element.firstChild;
    // 知道不存在节点为止
    while ( cur != null ) 
        //如果这个节点是文本节点,只包含空格
        if ( cur.nodeType == 3 && ! /\S/.test(cur.nodeValue) ) {
            // 删除文本节点
            element.removeChild( cur );
           // 如果是元素节点
        } else if ( cur.nodeType == 1 ) {
             // 递归这个节点
             cleanWhitespace( cur );
        }
        cur = cur.nextSibling; // 移到下一个节点
    }
}

  由于上面这个方法,存在效率低下问题,所以下面可以重写获取元素节点 的各个方法。

  获取elem的上一个元素节点:

function prev( elem ) {
    do {
        elem = elem.previousSibling;
    } while ( elem && elem.nodeType != 1 );
    return elem;
}

  获取elem的下一个元素节点:

function next( elem ) {
    do {
        elem = elem.nextSibling;
    } while ( elem && elem.nodeType != 1 );
    return elem;
}

 获取第一个子元素节点:如果不存在获取下一个元素节点

function first( elem ) {
    elem = elem.firstChild;
    return elem && elem.nodeType != 1 ?
        next( elem ) : elem;
}

  获取最后一个子元素节点:如果不存在获取上一个元素节点

function last( elem ) {
    elem = elem.lastChild;
    return elem && elem.nodeType != 1 ?
        prev( elem ) : elem;
}

 获取父节点:(根据参数num,可以获取父节点的父节点)

function parent( elem, num ) {
    num = num || 1;
    for ( var i = 0; i < num; i++ )
        if ( elem != null ) elem = elem.parentNode;
    return elem;
}

 HTMLElement在IE中隐藏不可以用,FF中可以。

如下设置,表示Html中的元素(标签)都可以用next方法:

HTMLElement.prototype.next = function() {
    var elem = this;
    do {
        elem = elem.nextSibling;
    } while ( elem && elem.nodeType != 1 );
    return elem;
};

  重写getElementById方法:

function id(name) {
    return document.getElementById(name);
}

  重写getElementByTagName方法:

function tag(elem,name) {
    // 如果没有提供elem,就是整个文档
    return (elem || document).getElementsByTagName(name);
}

 重写createElement方法:

function create( elem ) {
    return document.createElementNS ?
        document.createElementNS( 'http://www.w3.org/1999/xhtml', elem ) :
        document.createElement( elem );
}

  重写insertBefore方法:

function before( parent, before, elem ) {
    // Check to see if no parent node was provided
    if ( elem == null ) {
        elem = before;
        before = parent;
        parent  = before.parentNode;
    }
    parent.insertBefore( checkElem( elem ), before );
}
 
function checkElem( elem ) {
    // If only a string was provided, convert it into a Text Node
    return elem && elem.constructor == String ?
        document.createTextNode( elem ) : elem;
}

 重写append方法:

function append( parent, elem ) {
    parent.appendChild( checkElem( elem ) );
}

 重写removeChild方法:

function remove( elem ) {
    if ( elem ) elem.parentNode.removeChild( elem );
}

 删除全部子元素:

// Remove all of an Element’s children from the DOM
function empty( elem ) {
    while ( elem.firstChild )
        remove( elem.firstChild );
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    精通javascript书及源码

    学习JavaScript源码,可以从中学习到如何利用这些技术实现高效的数据处理。 异步编程是JavaScript的另一个核心主题。事件循环、回调函数、Promise、async/await等技术用于解决非阻塞I/O问题。理解和运用这些机制,...

    精通JavaScript(源代码) jQuery之父John Resig所写

    总的来说,《精通JavaScript(源代码)》是一本深度和广度兼具的JavaScript进阶教程,它不仅涵盖了语言基础,更深入到jQuery的源码解析,让读者能够在理解JavaScript的基础上,更好地应用和扩展jQuery,从而提升Web...

    精通JavaScript源代码.rar

    《精通JavaScript》这本书深入浅出地介绍了JavaScript的各个方面,旨在帮助读者从新手进阶到高级开发者。其附带的源代码压缩包“精通JavaScript.rar”包含了381个示例,覆盖了书中讲解的各种技术点。 在JavaScript...

    精通JavaScript+jQuery曾顺

    精通JavaScript+jQuery 曾顺 配套有书中的列子

    精通javascript的源代码

    本资源“精通javascript的源代码”旨在帮助学习者通过实例深入理解JavaScript,从而更好地掌握这门语言。 在JavaScript的学习过程中,源代码起着至关重要的作用。源代码是程序的基础,它展示了如何使用语言语法、...

    精通JavaScriptJquery源码

    精通 JavaScript Jquery 随书实例源码

    精通Javascript+jQuery 源码 免费

    在提供的压缩包中,"精通Javascript+jQuery" 可能包含了多个章节的源码示例,这些例子覆盖了从基础到进阶的各种主题。你可以逐个研究这些代码,理解每个功能的实现方式,并尝试自己修改和扩展。这将是一个实践和巩固...

    精通JavaScript jquery之父力作 附源码

    《精通JavaScript:jQuery之父力作 附源码》是一本深入探讨JavaScript编程技术的书籍,作者在jQuery领域的权威使得这本书具有极高的学习价值。本书旨在帮助读者从基础到高级,全面掌握JavaScript语言,尤其注重实际...

    精通JavaScript源代码

    要精通JavaScript源代码,我们需要深入理解其核心概念,包括变量、数据类型、作用域、函数、闭包、原型链以及面向对象编程。 首先,JavaScript中的变量通过`var`、`let`或`const`关键字声明,具有动态类型,意味着...

    Pro JavaScript Techniques(jQuery之父作品:精通Javascript英文原版+源码)

    1. **JavaScript基础**:书中首先会回顾JavaScript的基础语法,包括变量、数据类型、控制结构(如if-else,switch)、函数和作用域等,帮助读者巩固基础。 2. **DOM操作**:JavaScript与HTML文档对象模型(DOM)的...

    精通javascript+jqurry源码文件

    在这本“精通JavaScript+jqurry源码文件”的书中,你可能会学习到以下知识点: 1. **JavaScript 基础**:包括变量声明、数据类型、运算符、控制流、函数、对象和数组等基础知识。 2. **JavaScript 高级特性**:如...

    精通JavaScript+jQuery电子书+源码-部分5

    在“精通JavaScript+jQuery电子书+源码-部分5”中,读者可以深入学习这两门技术的高级概念和实践技巧。这部分内容可能涵盖了以下几个关键知识点: 1. **JavaScript高级特性**:这可能包括闭包、原型链、异步编程...

    精通JavaScript动态网页编程(实例版) 光盘源码

    通过"精通JavaScript动态网页编程(实例版)"的学习,读者不仅能够理解这些概念,还能通过光盘源码中的实例进行实践,加深对每个知识点的理解。实例通常涵盖了从基础到高级的应用,帮助读者逐步建立起实际项目中的编程...

    精通JavaScript+jQuery_5+实例源码

    《精通JavaScript+jQuery》是曾顺撰写的一本深入学习JavaScript和jQuery技术的书籍,该书以丰富的实例和源码解析,旨在帮助读者全面掌握这两门重要前端技术。在这个压缩包中,我们找到了“精通JavaScript+jQuery_...

    《精通JavaScript动态网页编程(实例版)》光盘源码

    《精通JavaScript动态网页编程(实例版)》是一本专注于JavaScript技术在动态网页开发中的实践应用的书籍。光盘源码包含了大量的实例,旨在帮助读者深入理解JavaScript如何与AJAX、DHTML、W3C标准以及XML等技术相...

    精通JavaScript+jQuery电子书+源码-部分1

    本资源为“精通JavaScript+jQuery电子书+源码-部分1”,这是一个学习JavaScript和jQuery的宝贵资料。JavaScript作为浏览器中的解释型语言,主要用于实现客户端的动态效果、数据验证、页面交互等功能。而jQuery是一个...

    精通JavaScript+jquery 源码

    本文将深入探讨这两个技术的核心概念,并结合提供的《精通JavaScript+jQuery》书籍源码来阐述相关知识点。 首先,JavaScript 是一种轻量级的、解释型的编程语言,主要用于增强网页的用户体验。它在浏览器端运行,...

    精通javascript 源代码

    在"精通JavaScript源代码"的学习过程中,你需要掌握以下几个核心知识点: 1. **基础语法**:包括变量声明(var、let、const)、数据类型(原始类型如字符串、数字、布尔、null、undefined,以及对象类型)、操作符...

    精通javascript+Jquery源码

    本资源《精通javascript+jQuery源码》旨在帮助学习者深入理解这两门技术的精髓,通过源码分析,加速学习进程。 JavaScript,作为一门客户端脚本语言,是网页动态化的核心。它允许开发者在用户的浏览器上运行代码,...

Global site tag (gtag.js) - Google Analytics