文章目录
DOM基础语法
1、 简介
文档对象模型(DOM),是 W3C 组织推荐的处理可扩展标记语言(HTML、XML)的标准编程接口
W3C 已经定义了一系列 DOM 接口,通过这些 DOM 接口可以改变网页的内容、结构和样式
1.1 DOM树
文档:一个页面就是一个文档,DOM 中使用 document 表示
元素:页面中的所有标签都是元素,DOM 中使用 element 表示
节点:网页中的所有内容都是节点(标签、属性、文本、注释等),DOM 中使用 node 表示
DOM把以上内容都看做是对象
2、 获取元素
获取页面中的元素可以使用一下几种方式
- 根据 id 获取
- 根据标签名获取
- 通过 HTML5 新增的方法获取
- 特殊元素获取
2.1 根据 id 获取
使用 getElementById("id")
方法可以获取带有 id 的元素对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="time"> 2022-2-1</div>
<script>
var time = document.getElementById("time"); // 大小写敏感
console.log(typeof time);
console.dir(time);
console.log(time); // console.dir() 打印我们返回的元素对象,更好的查看里面的属性和方法
</script>
</body>
</html>
- 因为我们的文档页面从上往下加载,所以先得有标签,故我们 script 写到标签的下面
- get 获得 element 元素 by 通过 驼峰命名法
- 参数 id 是大小写敏感的字符串
- 返回的是一个元素对象
2.2 根据标签名获取
使用getElementsByTagName("标签名")
方法可以返回带有指定标签名的对象集合
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul>
<li>123 a</li>
<li>123 b</li>
<li>123 c</li>
<li>123 d</li>
<li>123 e</li>
</ul>
<script>
var lis = document.getElementsByTagName("li");
console.log(lis);
console.log(lis[0]);
for (var i = 0; i < lis.length(); i++){
console.log(lis[i])
}
</script>
</body>
</html>
- 返回的是获取过来元素对象的集合,以伪数组的形式存储,遍历获取数据
- 得到的元素是动态的
- 如果页面中没有这个元素,放回的伪数组是一个空数组
2.3 根据标签名获取
使用element.getElementByTagName("标签名")
获取某个元素(父元素)内部所有指定标签名的子元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul>
<li>123 a</li>
<li>123 b</li>
<li>123 c</li>
<li>123 d</li>
<li>123 e</li>
</ul>
<ol id="first">
<li>23 a</li>
<li>23 b</li>
<li>23 c</li>
<li>23 d</li>
<li>23 e</li>
</ol>
<script>
var ol1 = document.getElementById("first"); // var ol1 = document.getElementsByTagName("ol")[0] 效果一样
var lis = ol1.getElementsByTagName("li"); // 一定要指明那个父元素
console.log(lis);
console.log(lis[0]);
</script>
</body>
</html>
父元素必须是单个对象(必须指明是哪个元素对象)获取的时候不包括父元素自己
2.4 根据 类名来获取
使用document.getElementsByClassName("类名")
来获取元素对象集合
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="box">盒子1</div>
<div class="box">盒子2</div>
<script>
var boxs = document.getElementsByClassName("box");
console.log(boxs);
</script>
</body>
</html>
2.5 通过指定选择器获取
使用document.querySelector("选择器")
指定选择器,获取第一个元素对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="box">盒子1</div>
<div class="box">盒子2</div>
<div id="f1">盒子3</div>
<script>
var box = document.querySelector("div");
console.log(box);
var id = document.querySelector("#f1"); // 使用id选择
// 如果使用类选择器,则 (".box")
console.log(id);
</script>
</body>
</html>
使用document.querySelectorAll("选择器")
指定选择器,获取所有的元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="box">盒子1</div>
<div class="box">盒子2</div>
<div id="f1">盒子3</div>
<script>
var boxs = document.querySelectorAll(".box");
console.log(boxs);
</script>
</body>
</html>
2.6 获取 body 和 html 元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// body
var bodyEle = document.body;
console.log(bodyEle);
console.dir(bodyEle);
// html
var htmlEle = document.documentElement;
console.log(htmlEle);
</script>
</body>
</html>
3、 事件基础
3.1 概述
JS 使我们有能力创建动态页面,而事件是可以被 JS 侦测到的行为
简单理解:触发 — 响应机制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button id="btn">hello</button>
<script>
btn.onclick = function() {
alert("hello world"