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介绍的更多相关文章

  1. javascript学习笔记之DOM与表单

    DOM(文档对象模型),猫叔了一个层次化的节点树 一.DOM NODE相关公共属性与方法 DOM中所有节点都实现了NODE接口,该接口的公共属性和方法如下: 1.节点基本属性 1)NodeType 节 ...

  2. JavaScript 学习笔记-HTML&&DOM

    HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. JavaScript 能够 ...

  3. javascript学习笔记之DOM

    DOM(文档对象模型),描述了一个层次化的节点树 一.DOM NODE相关公共属性与方法 DOM中所有节点都实现了NODE接口,该接口的公共属性和方法如下: 1.节点基本属性 1)NodeType 节 ...

  4. JavaScript学习笔记之DOM对象

    目录 1.Document 2.Element 3.Attribute 4.Event 1.Document 每个载入浏览器的 HTML 文档都会成为 Document 对象,Document 对象允 ...

  5. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

  6. Javascript学习笔记三——操作DOM(二)

    Javascript学习笔记 在我的上一个博客讲了对于DOM的基本操作内容,这篇继续巩固一下对于DOM的更新,插入和删除的操作. 对于HTML解析的DOM树来说,我们肯定会时不时对其进行一些更改,在原 ...

  7. Javascript学习笔记二——操作DOM

    Javascript学习笔记 DOM操作: 一.GetElementById() ID在HTML是唯一的,getElementById()可以定位唯一的一个DOM节点 二.querySelector( ...

  8. HTML+CSS学习笔记(1) - Html介绍

    HTML+CSS学习笔记(1) - Html介绍 1.代码初体验,制作我的第一个网页 <!DOCTYPE HTML> <html> <head> <meta ...

  9. Java程序猿的JavaScript学习笔记(8——jQuery选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

随机推荐

  1. linux设备驱动模型二【转】

    本文转载自:http://blog.csdn.net/u013904227/article/details/51167886 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+] ...

  2. 【NYOJ42】一笔画问题

    一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 Position:http://acm.nyist.net/JudgeOnline/problem.php?pid= ...

  3. bzoj2125 最短路——仙人掌两点间距离

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2125 仙人掌!模仿 lyd 的代码写的,也算是努力理解了: 主要分成 lca 在环上和不在环 ...

  4. bzoj2216

    决策单调性+整体二分 这里就是j<k且kj劣于j,j不会再选,所以我们整体二分 pos是因为从L->R中这个是最优点,所以对于mid+1->r选pos之前肯定不优,l->mid ...

  5. bzoj2179

    fft裸题 我还没有背下来fft #include<bits/stdc++.h> #define pi acos(-1) using namespace std; ; int n, m, ...

  6. jsp中的setHeader页面跳转备忘录

    1 <!-- response.setHeader("refresh","3;url=你想跳的页面")--> <%-- response.se ...

  7. [Apple开发者帐户帮助]七、注册设备(1)注册一个设备

    您需要已注册的设备来创建开发或临时配置文件.要使用开发人员帐户注册设备,您需要拥有设备名称和设备ID. 注意:如果您使用自动签名,Xcode会为您注册连接的设备.Xcode Server也可以配置为注 ...

  8. [Swift通天遁地]二、表格表单-(3)在表格中嵌套另一个表格并使Cell的高度自适应

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  9. [Swift通天遁地]四、网络和线程-(10)处理图片:压缩、缩放、圆角、CoreImage滤镜、缓存

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  10. Java中多个线程交替循环执行

    有些时候面试官经常会问,两个线程怎么交替执行呀,如果是三个线程,又怎么交替执行呀,这种问题一般人还真不一定能回答上来.多线程这块如果理解的不好,学起来是很吃力的,更别说面试了.下面我们就来剖析一下怎么 ...