HTML DOM 学习
HTML DOM 学习
By: Mirror王宇阳
E-mail:2821319009@qq.com
DOM 文档对象模型
DOM简单来说就是文档对象模型,当一个HTML页面被加载就会创建HTML页面的DOM

JavaScript的“权利”:
- 改变页面中DOM的所用的HTML元素
- 改变页面中DOM的所用的HTML属性
- 改变页面中DOM的所用的CSS样式
- 添加/删除DOM中所用的HTML元素、属性和CSS样式属性
- 对页面中所有已存在的HTML事件作出反应
- 可以在DOM中创建新的HTML事件
DOM的特性:
- 整个HTML页面文档就是一个文档节点(只存在一个 <html>根元素)
- 每一个HTML内的标签是一个元素节点
- 每一个HTML元素中的文本是文本节点
- 每一个HTML属性中的内容是属性节点
- 注释内容属于注释节点
DOM的节点:
doucument文档节点;HTML文档的父节点,DOM文档的根节点element元素节点;元素节点拥有自己的属性节点attr属性节点;以element作为父节点text文本节点;可作为独立节点存在,是终节点conmment注释节点;解释HTML的注释类信息
document 对象
获取元素对象的方法:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<h3>I love HCIT</h3>
<div id="info" class="bd">
<h2>Hello,World!</h2>
<h3>I'am Mirror王宇阳 is student</h3>
</div>
<script>
var id = document.getElementById("info");
var tag= document.getElementsByTagName("h3");// 全局
var idtag = id.getElementsByTagName("h3"); // div_info标签中的h3
var classt = document.getElementsByClassName("bd");
console.log(id);
console.log(tag[0]);
console.log(idtag[0].innerHTML);
console.log(classt);
console.log(classt[0].innerHTML);
</script>
</body>
</html>
document.getElementsById()
- 返回指定标签ID名的元素
document.getElementsByName()
- 返回指定标签Name名的元素
document.getElementsByTagName()
- 返回指定标签类型名的元素
document.getElementsByClassNam()
- 返回指定标签Class名的元素
上述四种常见的获取元素对象标签的方法,都不具有绝对的唯一性
当我们获取元素对象标签元素的时候,方法返回的是自己查找的所有内容以数组返回
我们需要使用数组下标的方式获取读取唯一的元素
另外,我们可以利用节点的关系来对元素标签获取进行规范和控制,例如:
我们获取的内容在div中的table中的th标签中的元素,那么我们使用
getElementsByTagName()方法获取所有th标签,那么HTML页面中无数的th标签都会被获取
我们可以使用getElenemtsById()先定位目标div标签,再通过getElementsByTagName()方法获取th标签元素
对象元素读写特性:

innerHTML
- 表示对象元素所包含的文本和HTML代码内容
innerText
- 表示起始标签和结束标签之间的纯文本内容
outerHTML
- 整个DOM节点的HTML和文本内容,包含标签自身
outerText
- 表示起始标签和结束标签之间的纯文本内容
DOM对象节点操作:
创建节点
createElement():创建元素节点
返回新节点的对象引用,参数是创建的元素节点的标签名
var newElement = document.createElement("a"); // 创建一个<a>标签元素节点
createTextNode():创建文本节点
返回新节点的对象引用,参数是string并添加为节点的文本
var newText = document.createTextNode("百度一下");//创建一个baidu文本节点
createAttribute():创建属性节点
返回新节点的对象引用,参数是新节点的属性名。
属性节点必须要求以element元素节点为父类节点
var newAttr = document.createAttribute("href"); //创建一个color属性节点
newAttr.value = "http://www.baidu.com";
添加节点
appendChild()
添加新节点到方法所属节点的尾部,参数为新添加的子节点对象;
适合元素节点、文本节点的添加
newElement.appendChild(newText);// newElement节点添加文本节点newText
document.body.appendChild(newElement);// body标签中添加newElement节点
setAttributeNode()
添加新属性节点到方法所属节点的属性集合中,参数为新添加的子节点对象;
newElement.setAttributeNode(newAttr);//newElement添加newAttr属性节点
insertBefore()
insertBefore(node1,node2);
将node1新节点插入到相对节点node2的前面作为方法所属节点的子节点
删除节点
removeChild()
删除节点,参数是需要删除的节点node;该方法的所属节点对象是node的父节点
element.removeChild(node);
替换节点
replaceChild()
element.replaceChild(node1,node2);
node1节点替换原节点node2;该方法的所属节点对象是node的父节点
复制节点
cloneNode()
赋值一个节点,返回复制后的节点引用;参数为布尔值,true/false表示是否克隆该节点所哟子节点。
element.cloneNode(bool);
返回值是一个克隆的节点
var node = newElement.cloneNode(true); //复制一个节点
导航节点
firstChild : 返回第一个子节点对象内容
console.log(d1.firstChild.innerHTML);
lastChild : 返回最后的子节点对象内容
console.log(d1.lastChild.innerHTML);
parentNode : 返回子节点的父节点对象
console.log(d1.parentNode);
childNodes : 返回指定子节点对象的全部集合
console.log(d1.childNodes)
console.log(d1.childNodes.length)
children : 返回对象元素子节点的对象集合
console.log(d1.children)
console.log(d1.children.length);
nodeType : 返回节点类型 (3-文本节点 1-元素节点)
for (var i = 0 ; i < demo.childNodes.length ; i++) {
if (demo.childNodes[i].nodeType == 3) {
textNode ++;
} else if(demo.childNodes[i].nodeType == 1){
elementNode ++;
}
}
DOM事件
事件触发条件
| 事件属性 | 事件说明 | 触发 |
|---|---|---|
| onblur | 失去焦点时 | 键盘、鼠标、blur方法 |
| onfocus | 获得焦点时 | 键盘、鼠标、focus方法 |
| onchange | 修改内容时 | 键盘、鼠标、赋值语句 |
| onclick | 鼠标单击时 | 键盘、鼠标、click方法 |
| ondblclick | 鼠标双击时 | 鼠标 |
| onkeydown | 键盘按下 | 键盘 |
| onkeypress | 键盘按键(按/松) | 键盘 |
| onkeyup | 键盘抬起 | 键盘 |
| onmousedown | 鼠标按下时 | 鼠标 |
| onmousemove | 鼠标移动时 | 鼠标 |
| onmouseup | 鼠标抬起时 | 鼠标 |
| onmouseout | 鼠标移出时 | 鼠标 |
| onmouseover | 鼠标移入时 | 鼠标 |
| onload | 载入时 | 系统 |
| onsubmit | 表单提交时 | 键盘、鼠标、submit方法 |
| onreset | 表单重置时 | 键盘、鼠标、reset方法 |
event对象属性
当事件发生时会产生事件对象,事件对象得作用时用来记录事件发生得关键信息
| 属性 | 说明 | 条件 |
|---|---|---|
| altKey、ctrlKey、shiftKey | 是否按下Alt、Ctrl、Shift键 | 键盘鼠标 |
| button | 鼠标按钮是否按下 | 鼠标 |
| keyCode | 键盘按键时unicode值 | 键盘 |
| clientX、clientY | 鼠标在窗口区得坐标 | 鼠标 |
| offsetX、offsetY | 鼠标相对事件触发的坐标 | 鼠标 |
| srcElement | 事件触发者 | 事件 |
HTML DOM 学习的更多相关文章
- 前端基础-BOM和DOM学习
JavaScript分为 ECMAScript,BOM,DOM. BOM:是指浏览器对象模型,使JavaScript有能力与浏览器进行对象. DOM:是指文档对象模型,通过它,可以访问HTML文档的所 ...
- JavaScript DOM学习总结(一)
DOM 什么是DOM?简单地说DOM是一套对文档内容进行抽象和概念化的方法. W3C给出的DOM定义是这样的:"一个与系统平台和编程语言无关的接口,程序和脚本以通过这个接口动态的访问和修 ...
- Js dom 学习
节点类型 文档节点: 一棵DOM树的顶端是文档节点,它呈现为整个页面(相当于document对象),当需要访问任何元素.属性或文本节点时,都需要通过文档节点来进行导航.(document.) 元素节点 ...
- Dom学习笔记
今天老师出了一道面试题目:取到表单里面的textbox的值,两种方法.知道一种,老师说的什么dom,我竟然不知道. 以前学html的时候,老师也重来没有提到dom的概念.javaScript只是学了一 ...
- JavaScript DOM学习总结(二)
获取和设置属性 DOM实在是个好东西,掌握了它我们不仅可以在JavaScript中使用,其它程序语言我们同样可以使用. 接下来就一起使用DOM来干些实事吧! 1.getAttribute getAtt ...
- JS DOM学习笔记
1.window对象代表当前浏览器窗口 2.使用window对象的属性.方法的时候可以省略window.例如:window.alert("hello")一般写成alert(&quo ...
- HTML DOM学习之三
1.创建新的HTML元素:appendChild(); 如需向HTML DOM添加元素,首先必须创建该元素,然后把它追加到已有的元素上: <div id="div1"> ...
- HTML DOM学习之二
1.HTML DOM属性: **innerHTML属性-获取元素内容的最简单方法是使用innerHTML属性,innerHTML属性对于获取或替换HTML元素的内容很有用 <html> & ...
- HTML DOM学习之一
1.HTML DOM定义了访问和操作HTML文档的标准方法:DOM以树型结构表达了HTML文档: 2.DOM是W3C的标准,定义了访问HTML和XML文档的标准: DOM(文档对象模型)是中立于平台和 ...
随机推荐
- LeetCode 5276. 不浪费原料的汉堡制作方案 Number of Burgers with No Waste of Ingredients
地址 https://leetcode-cn.com/problems/number-of-burgers-with-no-waste-of-ingredients/ 目描述圣诞活动预热开始啦,汉堡店 ...
- Linux的curl和wget
wget wget命令用来从指定的URL下载文件.wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕.如果是服 ...
- cas的客户端应用是负载均衡,单点退出怎么办?
之前的项目一直是单节点,这次在生产系统中使用了负载均衡,一个应用部署了两个节点,负载均衡策略未知.这样在使用时发现了这么一个问题:在单点退出后,应用有时候可以退出,但有时还在登陆状态,这就很郁闷了. ...
- flask实现验证码并验证
效果图: 点击图片.刷新页面.输入错误点击登录时都刷新验证码 实现步骤: 第一步:先定义获取验证码的接口 verificationCode.py #验证码 @api.route('/imgCode') ...
- re实战记录
re实战记录 针对网页中的空格符 一般使用的.,但是它不能匹配\n,所以使用[\s\S]或者[\d\D]匹配所有字符 import re l1=r''' <div class="thu ...
- NSSearchPathForDirectoriesInDomains用法
iPhone会为每一个应用程序生成一个私有目录,这个目录位于: /Users/sundfsun2009/Library/Application Support/iPhone Simulator/Use ...
- 【网络流相关】最大流的Dinic算法实现
Luogu P3376 于\(EK\)算法求最大流时每一次只求一条增广路,时间复杂度会比较高.尽管实际应用中表现比较优秀,但是有一些题目还是无法通过. 那么我们就会使用\(Dinic\)算法实现多路增 ...
- tp5实现支付宝电脑支付(详解)
首先吐槽一下支付宝的官方文档,它只是简单介绍一下开发的流程和参数,而对于新人来说如果只看它的官方文档很多时候是看不懂的,我也是边看文档边网上查资料才把它弄懂.下面我详细介绍支付宝的电脑支付是如何实现 ...
- STM32 GPIO口的配置和应用
STM32F103ZET6 一共有7组IO口(有FT的标识是可以识别5v的) 每组IO口有16个IO 一共16*7=112个IO 4种输入模式: (1) GPIO_Mode_AIN 模拟输入 (2) ...
- KETTLE实现复杂的流程
KETTLE是一款将数据从来源端经过抽取(extract).转换(transform).加载(load)至目的端的非常好用的一款ETL工具.学会它,对于跨数据库的表处理或者定时生成文本,excel等常 ...