一、DOM简介
(一)什么是 DOM
1、文档对象模型(Document Object Model,简称 DOM),是W3C 组织推荐的处理可拓展标记语言(HTML 或者 XML)的标准编程接口。
2、W3C 已经定义了一系列的DOM接口,通过这些DOM 接口可以改变网页的内容、结构和样式。
(二) DOM 树
1、文档:一个页面就是一个文档,DOM中使用 document 表示
2、元素:页面中的所有标签都是元素,DOM中使用element 表示
3、节点:网页中所有内容都是节点(标签、属性、文本、注释等),DOM中使用node 表示
4、DOM 把以上内容都看做是对象
二、获取元素
(一)如何获取页面元素
1、DOM 在我们实际开发中主要用来操作元素
2、获取页面中的元素可以使用以下几种方式:
(1)根据 ID 获取
(2)根据标签名获取
(3)通过 HTML5 新增的方法获取
(4)特殊元素获取
(二)根据 ID 获取
使用 getElementById() 方法可以获取带有 ID 的元素对象。
(三)根据标签名获取
1、使用 getElementsByTagName() 方法可以返回带有指定标签名的对象的集合。
document.getElementsByTagName('标签名');
2、注意:
(1)因为得到的是一个对象的集合,所以我们想要操作里面的元素就需要遍历
(2)得到元素对象是动态的
(四)通过 HTML5新增的方法获取
1、document.getElementsByClassName('类名'); //根据类名返回元素对象集合
2、document.querySelector('选择器'); // 根据指定选择器返回第一个元素对象
3、document.querySelectorAll('选择器'); // 根据指定选择器返回
(五)获取特殊元素(body,html)
1、获取body元素
document.body // 返回body元素对象2、获取html元素
document.documentElement // 返回html元素对象三、事件基础
(一)事件概述
1、JavaScript 使我们有能力创建动态页面,而事件是可以被JavaScript 侦测到的行为。
2、简单理解:触发——响应机制
3、网页中的每个元素都可以产生某些可以触发JavaScript的事件,例如,我们可以在用户点击某按钮时产生一个事件,然后去执行某些操作。
(二)事件三要素
// 点击一个按钮,弹出对话框 // 1. 事件是有三部分组成 事件源 事件类型 事件处理程序 我们也称为事件三要素 // (1) 事件源 事件被触发的对象 谁被触发了 按钮 var btn = document.getElementById('btn'); // (2) 事件类型 如何触发 什么事件 比如鼠标点击(onclick) 还是鼠标经过 还是键盘按下 // (3) 事件处理程序 通过一个函数赋值的方式 完成 btn.onclick = function() { alert('点秋香'); } (三)执行事件的步骤 1、获取事件源 2、注册事件(绑定事件) 3、添加事件处理程序(采取函数赋值形式)(四)常见的鼠标事件
鼠标事件 | 触发条件 |
onclick | 鼠标点击左键触发 |
onmouseover | 鼠标经过触发 |
onmouseout | 鼠标离开触发 |
onfocus | 获取鼠标焦点触发 |
onblur | 失去鼠标焦点触发 |
onmousemove | 鼠标移动触发 |
onmouseup | 鼠标弹起触发 |
onmousedown | 鼠标按下触发 |
四、操作元素
JavaScript的DOM操作可以改变网页内容、结构和样式,我们可以利用 DOM 操作元素来改变元素里面的内容、属性等。注意以下都是属性。
(一)改变元素内容
1、element.innerText
从起始位置到终止位置的内容,但它去除 html 标签,同时空格和换行也会去掉
2、element.innerHTML
起始位置到终止位置的全部内容,包括 html 标签,同时保留空格和换行
(二)常用元素的属性操作
1、innerText、innerHTML 改变元素内容
2、src、href
3、id、alt、title
(三)表单元素的属性操作
1、利用DOM可以操作如下表单元素的属性:
type、value、checked、selected、disabled
(四)样式属性操作
我们可以通过JS修改元素的大小、颜色、位置等样式
1、element.style 行内样式操作
注意:
(1)JS 里面的样式采取驼峰命名法,比如 fontSize、backgroundColor
(2)JS 修改 style 样式操作,产生的是行内样式,css 权重比较高
2、element.className 类名样式操作
注意:
(1)如果样式修改较多,可以采取操作类名方式更改元素样式
(2)class因为是个保留字,因此使用className来操作元素类名属性
(3)className 会直接更改元素的类名,会覆盖原先的类名