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 ...
随机推荐
- 并行运维工具pssh的安装及实战应用
并行运维工具pssh的安装及实战应用 - CSDN博客 https://blog.csdn.net/field_yang/article/details/68066468
- shell 脚本大文件处理
shell 脚本大文件处理 字符串处理 s='{"_id":{"$oid":"59b73d80930c17474f9f050d"},&qu ...
- go语言笔记——是c开发的 lex yacc进行词法和语法分析,go不支持函数和运算符重载,不支持类型继承,也不支持断言,还有泛型
从 Go 1.0.3 版本开始,不再使用 8g,8l 之类的指令进行程序的构建,取而代之的是统一的 go build 和 go install 等命令,而这些指令会自动调用相关的编译器或链接器. 如果 ...
- createrepo
[root@iio enp]# createrepo -g /enp/comps.xml .Spawning worker 0 with 1362 pkgsWorkers FinishedSaving ...
- Nginx的alias与root的用法区别和location匹配规则
1.alias与root的用法区别 最基本的区别:alias指定的目录是准确的,root是指定目录的上级目录,并且该上级目录要含有location指定名称的同名目录. location /abc/ { ...
- 那些有意思的Github
https://github.com/ngosang/trackerslist Linux下那些有趣的命令.. https://www.linu&xp&robe.com/linux-i ...
- pcntl研究
虽说php用于并发计算有点山寨,但总比没有强把.(有问题请指正) 下面是pcntl多线程的例子.(只能用于cli模式,而且只能用于linux环境) <?php $starttime=microt ...
- bzoj2427:[HAOI2010]软件安装(Tarjan+tree_dp)
2427: [HAOI2010]软件安装 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1053 Solved: 424[Submit][Statu ...
- springMVC是什么等七个问题
- Bootstrap3模态框Modal垂直居中样式
1,Bootstrap 模态框插件Bootbox垂直居中样式: <!DOCTYPE html> <html lang="en"> <head> ...