DOM编程艺术(节点操作)
2016-06-12 12:57
363 查看
参考书:JavaScript DOM编程艺术(第2版)
大纲:
-获取节点
-创建节点
-修改节点
-插入节点
-删除节点
-innerHTML
一、获取节点
1、通过关系获取节点:
*父子关系
-parentNode
-firstChild / lastChild / childNodes
-childNodes / children
*兄弟关系
-previousSibling / nextSibling
-previousElementSibling / nextElementSibling
存在问题:通过节点关系来获得元素的可维护性差。
2、通过接口获取节点:
*getElementById
*getElementsByTagName
*getElementsByClassName
*querySelector / All
二、创建节点
document.createElement(tagName)
三、修改节点
1、textContent (IE9以下不支持)
element.textContent 节点及其后代节点的文本内容
2、innerText (不是W3C规范,Firefox不支持)
四、插入节点
1、appendChild 在指定元素的末尾插入节点
element.appendChild(achild);
2、insertBefore 在指定元素的前面插入节点
三个参数:(1)新元素 newElement
(2)目标元素 targetElement
(3)父元素 :目标元素的父元素 parentElement
parentElement.insertBefore(newElement,targetElement)
不必搞清楚父元素到底是哪个,因为targetElement元素的parentNode属性值就是它。在DOM里,元素节点的父元素必须是另一个元素节点(属性节点和文本节点的子元素不允许是元素节点。)
targetElement.parentNode.insertBefore(newElement,targetElement)
3、自己写insertAfter函数
element.removeChild(child)
六、innerHTML
element.innerHTML
存在问题:内存泄露
安全问题
建议仅用于新节点。
大纲:
-获取节点
-创建节点
-修改节点
-插入节点
-删除节点
-innerHTML
一、获取节点
1、通过关系获取节点:
*父子关系
-parentNode
-firstChild / lastChild / childNodes
-childNodes / children
*兄弟关系
-previousSibling / nextSibling
-previousElementSibling / nextElementSibling
存在问题:通过节点关系来获得元素的可维护性差。
2、通过接口获取节点:
*getElementById
*getElementsByTagName
*getElementsByClassName
*querySelector / All
name | only document | sole | live |
getElementById | Y | Y | |
getElementsByTagName | Y | ||
getElementsByClassName | Y | ||
querySelectorAll | |||
querySelector | Y |
document.createElement(tagName)
三、修改节点
1、textContent (IE9以下不支持)
element.textContent 节点及其后代节点的文本内容
2、innerText (不是W3C规范,Firefox不支持)
if(!('innerText' in document.body)){ HTMLElement.prototype.__defineGetter__("innerText", function(){ return this.textContent; }); HTMLElement.prototype.__defineSetter__("innerText",function(s){ return this.textContent = s; }); }
四、插入节点
1、appendChild 在指定元素的末尾插入节点
element.appendChild(achild);
2、insertBefore 在指定元素的前面插入节点
三个参数:(1)新元素 newElement
(2)目标元素 targetElement
(3)父元素 :目标元素的父元素 parentElement
parentElement.insertBefore(newElement,targetElement)
不必搞清楚父元素到底是哪个,因为targetElement元素的parentNode属性值就是它。在DOM里,元素节点的父元素必须是另一个元素节点(属性节点和文本节点的子元素不允许是元素节点。)
targetElement.parentNode.insertBefore(newElement,targetElement)
3、自己写insertAfter函数
//编写insertAfter函数,功能是在现有元素后插入一个新元素 function insertAfter(newElement,targetElement){ var parent = targetElement.parentNode; if(parent.lastChild == targetElement){ parent.appendChild(newElement); }else{ parent.insertBefore(newElement,targetElement.nextSibling); } }五、删除节点
element.removeChild(child)
六、innerHTML
element.innerHTML
存在问题:内存泄露
安全问题
建议仅用于新节点。
相关文章推荐
- html5 web数据存储
- SEO
- 异步流程控制:7 行代码学会 co 模块
- [译] React 入门
- 如何优雅处理前端异常?
- Mootools 1.2教程(2) DOM选择器
- DOM 事件流详解
- Dom在ajax技术中的作用说明
- javascript针对DOM的应用分析(三)
- Dom 是什么的详细说明
- javascript针对DOM的应用分析(五)
- javascript针对DOM的应用实例(一)
- 牛叉的Jquery――Jquery与DOM对象的互相转换及DOM的三种操作
- 在javascript中对于DOM的加强
- Dom与浏览器兼容性说明
- JavaScript DOM学习第一章 W3C DOM简介
- 《JavaScript DOM 编程艺术》读书笔记之DOM基础
- 前端jquery部分很精彩
- JQuery包裹DOM节点的方法