网站首页 > 知识剖析 正文
1. 关于DOM
文档对象模型(DocumentObject Model),是基于浏览器编程的一套API接口,W3C出台的推荐标准,每个浏览器都有一些细微的差别,其中以Mozilla(火狐)的浏览器最与标准接近。
通过 DOM,可以访问所有的 HTML元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。
2. 动态改变文档内容
要想对页面的内容做修改,需要如下方式来操作:
? a.解析文档(如HTML)并生成DOM树
? b.通过DOM提供的属性和方法,获取或改变文档的内容
2.1 DOM的节点
HTML 文档中的每个成分都是一个节点(Node)
DOM 是这样规定的:
- 整个文档是一个文档节点
- 每个 HTML 标签是一个元素节点
- 包含在 HTML 元素中的文本是文本节点
- 每一个 HTML 属性是一个属性节点
- 注释属于注释节点
2.1.1 节点间的关系
节点彼此都有等级关系
父节点、子节点、兄弟节点(同级节点)
2.2 DOM标准接口
W3C提供了三类DOM标准接口,如下:
? a. 核心DOM,适用于各种结构化文档
? b.HTML DOM,专用于HTML文档
c. XML DOM,专用于XML文档
3. 核心DOM操作
3.1 访问节点
访问节点兼容处理
getElement系列方法
使用getElement系列方法来访问指定的节点
- getElementById():返回对拥有指定id的第一个对象的引用
- getElementsByTagName():返回带有指定名称的对象集合
- getElementsByClassName():返回指定的类选择器的集合
- getElementsByName():返回带有指定名称的对象集合(注意不是所有标签都有name属性)
3.1.1 节点信息1
每个节点都拥有包含节点某些信息的属性
- nodeName(节点名称)
- nodeValue(节点值)
- nodeType(节点类型)
3.1.2 节点信息2
nodeName
- 元素节点的 nodeName (节点名称)是标签名称
- 属性节点的 nodeName 是属性名称
- 文本节点的 nodeName 永远是 #text
- 文档节点的 nodeName 永远是 #document
nodeValue
- 对于文本节点,nodeValue 属性包含文本
- 对于属性节点,nodeValue 属性包含属性值
nodeType
- 元素 1 、属性 2、 文本 3、 注释 8、 文档 9
- 上面不同的数值代表不同的节点类型
3.2 创建和操作节点
3.2.1 主要方法
方法 说 明
createElement( tagName) 创建一个名为tagName的新元素节点,用法Document.createElement(标签名)
ANode.appendChild( BNode) 把子节点B追加到父节点A里面的末尾
insertBefore( ANode,BNode ) 把A节点插入到B节点之前
Node.loneNode(deep) deep为true则复制该节点以及该节点的所有子节点,为false则只复制该节点和其属性
3.2.2 操作节点的属性
3.3 删除和替换节点
方法 说 明
removeChild( node) 删除指定的节点(用父级元素去调用它)
replaceChild( newNode, oldNode) 用newNode来替换oldNode(https://www.cnblogs.com/zzq919101/p/6017152.html)
3.3.1 removeChild()示例代码如下
var tb = document.getElementById("tb");
//先找到要删除的节点,这里要删除一行
var tr = tb.lastChild.lastChild;
//这里也需要父节点操作子节点
tr.parentNode.removeChild(tr);???
3.3.2 replaceChild()示例代码
var tb = document.getElementById("tb");
var tr = document.createElement("tr");
var td1 = document.createElement("td");
var td2 = document.createElement("td");
td1.innerHTML = "我的内容1";
td2.innerHTML = "我的内容2";
tr.appendChild(td1);
tr.appendChild(td2);
//父节点操作子节点
//两个参数,第一个表示新节点,第二个表示旧节点,这里用心节点替换旧节点
tb.lastChild.replaceChild(tr,tb.lastChild.firstChild);??
3.4 其他
id,value等操作
innerHTML和innerText的区别
- 如果内容中有html标签,使用innerHTML时,内容中的html标签会被解析出来,而使用innerText时,html只会被当作文本显示出来
元素.style.样式
className
3.5 示例
代码1:
结果1:
代码2:
结果2:
代码3:
结果3:
4. HTML DOM操作
? HTML文档中的每个节点,都是DOM对象,每个DOM对象都有属于自己的属性和方法.
? HTML DOM在操作表格时,我们把一个表格看成是一个table对象,那么一个table对象是由若干个行对象(row)组成的,而其中每个行对象又是由若干个单元格对象(cell)组成的
? Table对象可以操作行对象,行对象可以操作单元格对象
4.1 table表格对象
类别 名称 描述
属性 rows[] 返回包含表格中所有行的一个数组
方法 insertRow() 在表格中插入一个新行
方法 deleteRow() 从表格中删除一行
4.2 row行对象
类别 名称 描述
属性 cells[] 返回包含行中所有单元格的一个数组
属性 rowIndex 返回该行在表中的位置
方法 insertCell() 在一行中的指定位置插入一个空的<td>标签
方法 deleteCell() 删除行中指定的单元格
另,对于单元格对象,还有cellIndex可以获取单元格的索引号
例如,这里需要在表格的末尾追加一行:
var tb = document.getElementById("tb");
//添加之前,tb中共有多少个tr,返回的是一个数组
var alltrs = tb.lastChild.rows;
//先在tb中添加一行,此时行虽然添加了,但行中没有任何内容
//此时传递的参数了,是一个添加的位置,是tr的索引号,这里是在末尾追加
var newtr = tb.insertRow(alltrs.length);
//再在新添加的行中,添加单元格对象
var td1 = newtr.insertCell(0);
var td2 = newtr.insertCell(1);
//然后还需要往td中添加内容
td1.innerHTML = "html dom";
td2.innerHTML = "测试";??
- 上一篇: HTML网页制作常用标签及说明——前端开发入门
- 下一篇: 前端入门二(html)
猜你喜欢
- 2024-11-25 Chrome 108 发布新的 CSS 布局单位升级
- 2024-11-25 简单小程序:登录页面(html)
- 2024-11-25 通过CSS控制PC端的TABLE在移动端展示
- 2024-11-25 利用 Python 开发桌面小工具,实现htm自动转为excel文件
- 2024-11-25 团结一致,尽显风采丨TR02807班HTML项目验收
- 2024-11-25 想学HTML该从何入手?web前端HTML终极指南
- 2024-11-25 超实用压力测试工具-ab工具
- 2024-11-25 前端入门二(html)
- 2024-11-25 HTML网页制作常用标签及说明——前端开发入门
- 2024-11-25 网页开发HTML5入门内容,一起来学习吧
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)