JavaScript学习笔记之DOM介绍
1、简介
文档对象模型(Document Object Model,DOM)使 JavaScript 可以访问和操作 HTML 文档
当网页被加载时,浏览器会创建页面的文档对象模型,根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都被视为节点,而 HTML 文档则被视为节点树
2、方法
DOM 方法定义在节点上执行的动作,以下列出常用的 DOM 方法:
- getElementById():返回带有指定 ID 的节点
- getElementsByTagName():返回带有指定标签名称的节点列表
- getElementsByClassName():返回带有指定类名的节点列表
- appendChild():添加子节点
- removeChild():删除子节点
- replaceChild():替换子节点
- createElement():创建元素节点
- createTextNode():创建文本节点
- createAttribute():创建属性节点
- getAttribute():返回指定的属性值
- setAttribute():设置属性为指定的值
3、属性
DOM 属性是节点的值,以下列出常用的 DOM 属性:
innerHTML:获取元素内容
nodeName:规定节点名称,只读
nodeName | 值 |
---|---|
元素节点 | 与标签名相同 |
属性节点 | 与属性名相同 |
文本节点 | #text |
文档节点 | #document |
- nodeValue:规定节点的值
nodeValue | 值 |
---|---|
元素节点 | undefined 或 null |
属性节点 | 属性值 |
文本节点 | 文本本身 |
- nodeType:规定节点类型,只读
nodeType | 值 |
---|---|
元素节点 | 1 |
属性节点 | 2 |
文本节点 | 3 |
注释节点 | 8 |
文档节点 | 9 |
4、访问节点
(1)getElementById()
使用 getElementById() 方法可以返回带有指定 ID 的节点
<!DOCTYPE html>
<html>
<body>
<p>Hello World!</p>
<p id="dom">Hello DOM!</p>
<script>
x = document.getElementById("dom");
document.write("id 为 dom 的文本: " + x.innerHTML);
</script>
</body>
</html>
<!-- 页面内容:
Hello World!
Hello DOM!
id 为 dom 的文本: Hello DOM!
-->
(2)getElementsByTagName()
使用 getElementsByTagName() 方法可以返回带有指定标签名称的节点列表
<!DOCTYPE html>
<html>
<body>
<p>Hello World!</p>
<p>Hello DOM!</p>
<script>
x = document.getElementsByTagName("p");
document.write("第一段文本: " + x[0].innerHTML);
</script>
</body>
</html>
<!-- 页面内容:
Hello World!
Hello DOM!
第一段文本: Hello World!
-->
(3)getElementsByClassName()
使用 getElementsByClassName() 方法可以返回带有指定类名的节点列表
5、修改节点
(1)修改节点内容
修改节点内容最简单的方法是使用 innerHTML 属性
可以通过以下语法修改 HTML 元素的内容
document.getElementById("...").innerHTML = value;
(2)修改节点属性
可以通过以下语法修改 HTML 元素的属性
document.getElementById("...").attribute = value;
6、添加节点
如果需要添加新的节点,可以按照下面三个步骤进行:
- 创建新的节点
- 找到已存在的节点
- 将新的节点追加到已存在的节点 —— appendChild
// 创建新的元素节点 para
var para = document.createElement("p");
// 创建新的文本节点 text
var text = document.createTextNode("This is a new paragraph.");
// 将文本节点 text 添加到元素节点 para
para.appendChild(text);
// 找到已存在的元素节点 element
var element = document.getElementById("...");
// 将新的元素节点 para 追加到已存在的元素节点 element
element.appendChild(para);
7、删除节点
如果需要删除已经存在的节点,可以按照下面三个步骤进行:
- 找到待删除节点的父节点
- 找到待删除节点
- 从父节点中删除子节点 —— removeChild
// 找到待删除节点的父节点 parent
var parent = document.getElementById("div1");
// 找到待删除节点 child
var child = document.getElementById("p1");
// 从父节点 parent 中删除子节点 child
parent.removeChild(child);
也可以先找到待删除节点,然后通过 parentNode 属性查找待删除节点的父节点
// 找到待删除节点 child
var child = document.getElementById("p1");
// 通过 parentNode 属性查找待删除节点的父节点,然后从父节点中删除子节点 child
child.parentNode.removeChild(child);
8、替换节点
替换节点与添加和删除节点类似,需要四个步骤:
- 创建新的节点
- 找到待替换节点的父节点
- 找到待替换节点
- 从父节点中替换子节点成新的节点 —— replaceChild
// 创建新的元素节点 para
var para = document.createElement("p");
// 创建新的文本节点 text
var text = document.createTextNode("This is a new paragraph.");
// 将文本节点 text 添加到元素节点 para
para.appendChild(text);
// 找到待替换节点的父节点 parent
var parent = document.getElementById("div1");
// 找到待替换节点 child
var child = document.getElementById("p1");
// 从父节点 parent 中替换子节点 child 成新的节点 para
parent.replaceChild(para,child);
同样的,可以通过 parentNode 属性查找待替换节点的父节点
9、改变 CSS
HTML DOM 允许通过 JavaScript 改变 HTML 元素的样式
可以通过以下语法修改 HTML 元素的样式
document.getElementById("...").style.property = value;
Background 属性
background:在一行中设置所有的背景属性
backgroundColor:设置元素的背景颜色
- backgroundImage:设置元素的背景图像
- backgroundPosition:设置背景图像的起始位置
- backgroundRepeat:设置背景图像是否重复
backgroundAttachment:设置背景图像是否固定
Border 属性
- border:在一行中设置四个边框的所有属性
- borderTop:在一行中设置顶边框的所有属性
- borderRight:在一行中设置右边框的所有属性
- borderBottom:在一行中设置底边框的所有属性
- borderLeft:在一行中设置左边框的所有属性
- borderColor:设置所有四个边框的颜色
- borderStyle:设置所有四个边框的样式
- borderWidth:设置所有四个边框的宽度
Margin 属性
- margin:在一行中设置元素的边距
- marginTop:设置元素的上边距
- marginRight:设置元素的右边距
- marginBottom:设置元素的下边距
- marginLeft:设置元素的左边距
Padding 属性
- padding:在一行中设置元素的填充
- paddingTop:设置元素的上填充
- paddingRight:设置元素的右填充
- paddingBottom:设置元素的下填充
- paddingLeft:设置元素的左填充
Outline 属性
- outline:在一行中设置元素轮廓的所有属性
- outlineColor:设置围绕元素的轮廓颜色
- outlineStyle:设置围绕元素的轮廓样式
- outlineWidth:设置围绕元素的轮廓宽度
List 属性
- listStyle:在一行中设置列表的所有属性
- listStyleType:设置列表项标记的类型
- listStyleImage:设置列表项标记为图像
- listStylePosition:设置列表项标记的位置
Table 属性
- borderCollapse:设置表格边框是否合并为单边框
- borderSpacing:设置分隔单元格边框的距离
- captionSide:设置表格标题的位置
- emptyCells:显示空单元格的显示
- tableLayout:设置显示表格单元格、行以及列的算法
Text 属性
- color:文本颜色
- font:在一行中设置字体的所有属性
- fontFamily:字体系列
- fontSize:字体大小
- fontWeight:字体粗细
- fontStyle:字体样式
- fontStretch:紧缩或伸展字体
- fontVariant:小型大写字母
- letterSpacing:字间距
- wordSpacing:词间距
- lineHeight:行间距
- textAlign:文本对齐
- textIndent:文本缩进
- textDecoration:文本修饰
- textShadow:文本阴影
- textTransform:文本大写
- whiteSpace:空白显示
参考资料:
http://www.w3school.com.cn/js/index.asp
http://www.w3school.com.cn/htmldom/index.asp
http://www.w3school.com.cn/jsref/dom_obj_style.asp
JavaScript学习笔记之DOM介绍的更多相关文章
- javascript学习笔记之DOM与表单
DOM(文档对象模型),猫叔了一个层次化的节点树 一.DOM NODE相关公共属性与方法 DOM中所有节点都实现了NODE接口,该接口的公共属性和方法如下: 1.节点基本属性 1)NodeType 节 ...
- JavaScript 学习笔记-HTML&&DOM
HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. JavaScript 能够 ...
- javascript学习笔记之DOM
DOM(文档对象模型),描述了一个层次化的节点树 一.DOM NODE相关公共属性与方法 DOM中所有节点都实现了NODE接口,该接口的公共属性和方法如下: 1.节点基本属性 1)NodeType 节 ...
- JavaScript学习笔记之DOM对象
目录 1.Document 2.Element 3.Attribute 4.Event 1.Document 每个载入浏览器的 HTML 文档都会成为 Document 对象,Document 对象允 ...
- javascript学习笔记(四) Number 数字类型
数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数 toExponential() 方法 用科学 ...
- Javascript学习笔记三——操作DOM(二)
Javascript学习笔记 在我的上一个博客讲了对于DOM的基本操作内容,这篇继续巩固一下对于DOM的更新,插入和删除的操作. 对于HTML解析的DOM树来说,我们肯定会时不时对其进行一些更改,在原 ...
- Javascript学习笔记二——操作DOM
Javascript学习笔记 DOM操作: 一.GetElementById() ID在HTML是唯一的,getElementById()可以定位唯一的一个DOM节点 二.querySelector( ...
- HTML+CSS学习笔记(1) - Html介绍
HTML+CSS学习笔记(1) - Html介绍 1.代码初体验,制作我的第一个网页 <!DOCTYPE HTML> <html> <head> <meta ...
- Java程序猿的JavaScript学习笔记(8——jQuery选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
随机推荐
- 运行Java -jar somefile.jar时发生了什么(二)
(6)Java.c中的LoadMainClass 位置jdk/src/share/bin/java.c 该方法负责载入main函数所在的类. 该方法首先载入sun.launcher.LauncherH ...
- YTU 2723: 默认参数--求圆的面积
2723: 默认参数--求圆的面积 时间限制: 1 Sec 内存限制: 128 MB 提交: 206 解决: 150 题目描述 根据半径r求圆的面积, 如果不指定小数位数,输出结果默认保留两位小数 ...
- AngularJS2.0 一个表单例子——总体说来还是简化了1.x 使用起来比较自然
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 【POJ 1845】 Sumdiv
[题目链接] 点击打开链接 [算法] 不妨先将A分解质因数 A = p1^q1p2^p2p3^p3..pn^qn 那么,A^B = p1^q1Bp2^q2B...pn^qnB 根据约数和定理,A^B的 ...
- struts2里result类型Stream的参数配置
转自:https://blog.csdn.net/q714699280/article/details/51756126 contentType 内容类型,和互联网MIME标准中的规定类型一致,例如t ...
- php使用163邮箱发送邮件
email.class.php文件 <? class smtp { /* Public Variables */ var $smtp_port; var $time_out; var $host ...
- 《Akka应用模式:分布式应用程序设计实践指南》读书笔记9
性能 这也是一个比较大的问题,因为性能不一定是Akka本身的问题,还可能是你代码写的有问题. 优化的第一步就是找出性能的瓶颈,隔离出应用程序里面比较耗时的部分,然后尝试对其优化,减少需要耗费的时间成本 ...
- Django总结一
HTTPRequest与HTTPresponse 一. 1.互联网两台机器之间通行:ip.端口.协议 - 协议 - HTTP (80) - HTTPS (443) 2.浏览器输入URL一回车返回页面发 ...
- Educational Codeforces Round 45
A. 一个小模拟 不解释 //By SiriusRen #include <bits/stdc++.h> using namespace std; long long n,m,a,b ...
- 一、CSS的基础样式
CSS的基础样式 border 边框 复合写法 border:border-width border-style border-color: border-width:边框宽度 top right ...