第 9 章 DOM 的增删改查
DOM 的增删改查
本文不会详细讲解,只是简单提及知识要点,详细可以参考《dom高级编程》。
1. document.write
document.write('<h1>创建节点</h1>');
创建的节点会,重新生成一个html的DOM覆盖之前的,所以不可用。
2. create 系列创建
常用有四种方法,分别如下:
- document.createCommot() 创建注释
- document.createDocumentFragment()
- document.createTextNode()
- document.createElement()
说明:DocumentFragment,它作为一个“仓库”来使用,即可以在里面保存将来可能会添加到文档中的节点。
例子:
var comment = document.createCommot('A comment');
var fragment = document.createDocumentFragment();
var ul = document.getElementById("myList");
var li = null;
for (var i=0; i < 3; i++){
li = document.createElement("li");
li.appendChild(document.createTextNode("Item " + (i+1)));
fragment.appendChild(li);
}
ul.appendChild(fragment);
document.body.innerBefore(comment,document.body.firstChild);
3.高效的创建节点
- innerHTML
- outerHTML 包含自身节点的hmtl的返回
- innerText 剔除所有tag,返回文本节点,等同于textContent
- textContent 与innerText 区别在与 innerText不剔除标签转行的空格
- outerText 在查询时与innerText几乎一样,区别在于赋值,outerText会将自身的节点替换掉,不建议使用
window.onload = function () {
var div = document.getElementById('div');
var str = "<p> this is document element demo</p>";
div.innerHTML = str;
console.log('outerHTML',div.outerHTML);
console.log('innerText',div.innerText);
console.log('textContent',div.textContent);
console.log('outerText',div.outerText);
}
4. 查找节点
有两套api,一套是node,另一套则是document。
Node
- fistChild
- lastChild
- nextSibling
- previousSibling
- parentNode
- childNodes[i]
- childNodes.item(1)
例子:
// 遍历文本节点
// 递归
window.onload = function() {
var s = "";
function travel(space, node) {
if (node.tagName) {
s += space + node.tagName + '<br />';
}
var len = node.childNodes.length;
for (var i = 0; i < len; i++) {
travel(space + '|-', node.childNodes[i]);
}
}
travel("", document);
document.write(s);
}
DOM
实际上这套api解决了空白节点
- firstElementChild
- lastElementChild
- nextElementSibling
- previousElementSibling
- children[1]
5. 类数组NodeList
NodeList对象是一个节点的集合,是由Node.childNodes和document.querySelectorAll返回的.
详细地址
具体实例如下如下:
var div = document.getElementById('div');
var nodes = div.childNodes; // nodes就是一个NodeList的实例化
function makeArray(Nodelist) {
var arr = null;
try {
return Array.prototype.slice.call(NodeList);
} catch(e) {
arr = [];
for(var i = 0, len = nodeList.length; i < len; i++) {
arr.push(nodeList[i])
}
}
return arr;
}
6. 类数组对象HTMLCollection
HTML简单来说是节点集合,例如,获取ul下的所有li,就是一个
HTMLCollection,HTMLCollection 是即时更新的。
详细地址
它与Nodelist的区别,前者主要用在element,后者主要用于node。另外,他们是否时时更新,点击详细地址查看。
- getElementsByTagName
- document.scripts
- document.links
- document.images
- document.forms
- tr.cells
- select.options
- 略
7. 类数组对象NamedNodeMap
NamedNodeMap 接口表示属性节点 Attr 对象的集合。
详细地址
var box = document.querySelector('.box');
var attrs = box.attributes;
console.log(attrs);
console.log('class',attrs.class);
console.log('data-role',attrs['data-role']);
8. 类数组的对象的动态性
时时更新是什么?
举个例子:
var divs = document.getElementsByTagName('div');
console.log(divs.length);
document.body.appendChild('div');
console.log(divs.length)
你会发现前后两次输出的divs.length是不一样的。这是简单例子,实际上事件委托也是利用动态性,e.target 和上面divs.length非常类似。
9. 现代浏览器查找元素的方法
- 元素和节点区别。(节点包含元素)
- Api
- document.getElementById
- getElementsByTagName
- document.getElementsByName
- getElementsByClassName
- querySelector
- querySelectorAll
10. 添加节点操作
- appendChild 节点内部末尾位置
- insertBefore 可以插入节点内部的任何位置
- replaceChild
- cloneNode 通过传参可以拷贝内部节点,也可以不拷贝内部节点
- normalize 移除空的文本节点,并连接相邻的文本节点。
- splitText splitText方法可以根据指定的偏移量将一个文本节点分割成前后两个独立的兄弟节点
11. 删除节点
- removeChild
- removeNode
- innerHTML
- deleteContents
- textContent
第 9 章 DOM 的增删改查的更多相关文章
- JavaScript之DOM的增删改查
JavaScript的组成: 1. ECMAScript-语法规范 2. Web APIs(浏览器提供的工具) (1).BOM (浏览器对象模型) (2).DOM (文档对象模型) 今天就来讲讲DOM ...
- JavaScript(JS)之Javascript对象DOM之增删改查(四)
创建节点:var ele_a = document.createElement('a');添加节点:ele_parent.appendChild(ele_img);删除节点:ele_parent.re ...
- JS DOM节点增删改查 属性设置
一.节点操作 增 createElement(name)创建元素 appendChild();将元素添加 删 获得要删除的元素 获得它的父元素 使用removeChild()方法删除 改 第一种方 ...
- MariaDB第二章:基本增删改查
MariaDB 数据类型 MariaDB数据类型可以分为数字,日期和时间以及字符串值. 使用数据类型的原则:够用就行, 尽量使用范围小的,而不用大的 常用的数据类型 整数:int, bit 小数:de ...
- DOM节点的增删改查
在开始展开DOM操作前,首先需要构建一棵DOM树. <!DOCTYPE html> <html lang="en"> <head> <me ...
- js中script的上下放置区别 , Dom的增删改创建
回顾 javascript分为三部分: 1.ECMAScript5.0 es6(阮一峰) es7 es8 es6中有类的概念 声明变量 var let(es6中语法) 内置函数 Date Math.r ...
- 使用DOM进行xml文档的crud(增删改查)操作<操作详解>
很多朋友对DOM有感冒,这里我花了一些时间写了一个小小的教程,这个能看懂,会操作了,我相信基于DOM的其它API(如JDOM,DOM4J等)一般不会有什么问题. 后附java代码,也可以下载(可点击这 ...
- python全栈开发中级班全程笔记(第二模块、第三章)(员工信息增删改查作业讲解)
python全栈开发中级班全程笔记 第三章:员工信息增删改查作业代码 作业要求: 员工增删改查表用代码实现一个简单的员工信息增删改查表需求: 1.支持模糊查询,(1.find name ,age fo ...
- .NET Core实战项目之CMS 第十五章 各层联动工作实现增删改查业务
连着两天更新叙述性的文章大家可别以为我转行了!哈哈!今天就继续讲讲我们的.NET Core实战项目之CMS系统的教程吧!这个系列教程拖得太久了,所以今天我就以菜单部分的增删改查为例来讲述下我的项目分层 ...
随机推荐
- Tomcat 全攻略
转自:http://www.ibm.com/developerworks/cn/java/l-tomcat/ 简介 tomcat 是 jakarta 项目中的一个重要的子项目,其被 JavaWorld ...
- Vue获取DOM元素的属性值
项目中需要做一个小弹层,如下图: 我需要知道点击元素距离顶部的值,再计算弹层的top值,如下图: 在vue中如何获取到DOM元素距离窗口顶部的值呢? 1.通过$event获取 html: <di ...
- 理解Java枚举类型
(参考资料:深入理解java enum) 1.原理:对编译后的class文件javap反编译可以看出,定义的枚举类继承自java.lang.Enum抽象类且通过public static final定 ...
- Oracle垃圾数据清理相关问题 分类: Oracle 2015-08-06 11:14 12人阅读 评论(0) 收藏
垃圾数据清理,简单的说,就是删除不需要的那些数据,释放存储空间 最常用的就是delete命令.truncate命令,甚至是删除表空间重建,具体操作都很简单,不是本文的重点 下面,总结几个垃圾数据清理常 ...
- 使用Profile和Resources Filter隔离测试环境
转自:http://juvenshun.iteye.com/blog/206825 Maven能够帮我们很好的管理测试,我们可以在 src/test/java 和 src/test/resources ...
- [JS] ECMAScript 6 - Variable : compare with c#
前言 范围包括:ECMAScript 新功能以及对象. 当前的主要目的就是,JS的学习 --> ECMAScript 6 入门 let 命令 js 因为let, i的范围限制在了循环中. var ...
- [UI] 06 - jQuery
前言 From : http://www.runoob.com/jquery/jquery-intro.html Ref: jQuery 实例 一.什么是 jQuery ? jQuery是一个Java ...
- aws平台中为ec2实例添加双网卡
亚马逊平台创建ec2实例时默认创建一个网卡primary网卡,主网卡是不能分离的. 在ec2服务控制台为ec2附加网卡. 平台资料中为正在使用的ec2添加网卡用到的操作系统是Amazon Linux ...
- android中volley通信框架简介
1. 什么是Volley? 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient ...
- mysqldump命令的安装
author:headsen chen date:2019-03-14 11:31:00 安装:yum -y install mysql-client / apt-get install mys ...