去空格方法,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 );
}
分享到:
相关推荐
学习JavaScript源码,可以从中学习到如何利用这些技术实现高效的数据处理。 异步编程是JavaScript的另一个核心主题。事件循环、回调函数、Promise、async/await等技术用于解决非阻塞I/O问题。理解和运用这些机制,...
总的来说,《精通JavaScript(源代码)》是一本深度和广度兼具的JavaScript进阶教程,它不仅涵盖了语言基础,更深入到jQuery的源码解析,让读者能够在理解JavaScript的基础上,更好地应用和扩展jQuery,从而提升Web...
《精通JavaScript》这本书深入浅出地介绍了JavaScript的各个方面,旨在帮助读者从新手进阶到高级开发者。其附带的源代码压缩包“精通JavaScript.rar”包含了381个示例,覆盖了书中讲解的各种技术点。 在JavaScript...
精通JavaScript+jQuery 曾顺 配套有书中的列子
本资源“精通javascript的源代码”旨在帮助学习者通过实例深入理解JavaScript,从而更好地掌握这门语言。 在JavaScript的学习过程中,源代码起着至关重要的作用。源代码是程序的基础,它展示了如何使用语言语法、...
精通 JavaScript Jquery 随书实例源码
在提供的压缩包中,"精通Javascript+jQuery" 可能包含了多个章节的源码示例,这些例子覆盖了从基础到进阶的各种主题。你可以逐个研究这些代码,理解每个功能的实现方式,并尝试自己修改和扩展。这将是一个实践和巩固...
《精通JavaScript:jQuery之父力作 附源码》是一本深入探讨JavaScript编程技术的书籍,作者在jQuery领域的权威使得这本书具有极高的学习价值。本书旨在帮助读者从基础到高级,全面掌握JavaScript语言,尤其注重实际...
要精通JavaScript源代码,我们需要深入理解其核心概念,包括变量、数据类型、作用域、函数、闭包、原型链以及面向对象编程。 首先,JavaScript中的变量通过`var`、`let`或`const`关键字声明,具有动态类型,意味着...
1. **JavaScript基础**:书中首先会回顾JavaScript的基础语法,包括变量、数据类型、控制结构(如if-else,switch)、函数和作用域等,帮助读者巩固基础。 2. **DOM操作**:JavaScript与HTML文档对象模型(DOM)的...
在这本“精通JavaScript+jqurry源码文件”的书中,你可能会学习到以下知识点: 1. **JavaScript 基础**:包括变量声明、数据类型、运算符、控制流、函数、对象和数组等基础知识。 2. **JavaScript 高级特性**:如...
在“精通JavaScript+jQuery电子书+源码-部分5”中,读者可以深入学习这两门技术的高级概念和实践技巧。这部分内容可能涵盖了以下几个关键知识点: 1. **JavaScript高级特性**:这可能包括闭包、原型链、异步编程...
通过"精通JavaScript动态网页编程(实例版)"的学习,读者不仅能够理解这些概念,还能通过光盘源码中的实例进行实践,加深对每个知识点的理解。实例通常涵盖了从基础到高级的应用,帮助读者逐步建立起实际项目中的编程...
《精通JavaScript+jQuery》是曾顺撰写的一本深入学习JavaScript和jQuery技术的书籍,该书以丰富的实例和源码解析,旨在帮助读者全面掌握这两门重要前端技术。在这个压缩包中,我们找到了“精通JavaScript+jQuery_...
《精通JavaScript动态网页编程(实例版)》是一本专注于JavaScript技术在动态网页开发中的实践应用的书籍。光盘源码包含了大量的实例,旨在帮助读者深入理解JavaScript如何与AJAX、DHTML、W3C标准以及XML等技术相...
本资源为“精通JavaScript+jQuery电子书+源码-部分1”,这是一个学习JavaScript和jQuery的宝贵资料。JavaScript作为浏览器中的解释型语言,主要用于实现客户端的动态效果、数据验证、页面交互等功能。而jQuery是一个...
本文将深入探讨这两个技术的核心概念,并结合提供的《精通JavaScript+jQuery》书籍源码来阐述相关知识点。 首先,JavaScript 是一种轻量级的、解释型的编程语言,主要用于增强网页的用户体验。它在浏览器端运行,...
在"精通JavaScript源代码"的学习过程中,你需要掌握以下几个核心知识点: 1. **基础语法**:包括变量声明(var、let、const)、数据类型(原始类型如字符串、数字、布尔、null、undefined,以及对象类型)、操作符...
本资源《精通javascript+jQuery源码》旨在帮助学习者深入理解这两门技术的精髓,通过源码分析,加速学习进程。 JavaScript,作为一门客户端脚本语言,是网页动态化的核心。它允许开发者在用户的浏览器上运行代码,...