JavaScript- 4.1 DOM-document对象

本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。
HTML和CSS系列文章 已经收录在前端专栏,有需要的宝宝们可以点击前端专栏查看!

点赞关注不迷路!您的点赞、关注和收藏是对小编最大的支持和鼓励!

系列文章目录

JavaScript- 1.1 行内、内部、外部三种引用方式

JavaScript- 1.2 ECMA基本语法和控制流

JavaScript- 1.3 DOM对页面内容进行操作

JavaScript- 1.4 BOM对浏览器进行操作

JavaScript- 1.5 数据类型+变量+运算符

JavaScript- 1.6 基本控制流

JavaScript- 2.1 系统函数和自定义函数

JavaScript- 2.2 内置对象MATH

JavaScript- 2.3 内置对象String

JavaScript- 2.4 内置对象Date

JavaScript- 2.5 内置对象ARRAY

JavaScript- 2.6 数组应用

JavaScript- 2.7 二维数组

JavaScript- 3.1 定时器函数 window.settimeout & window.settinterval

JavaScript- 3.2 JavaScript实现不同显示器尺寸的响应式主题和页面

JavaScript- 4.1 DOM-document对象

JavaScript- 3.2 JavaScript实现不同显示器尺寸的响应式主题和页面

JavaScript- 4.1 DOM-document对象

JavaScript- 4.2 DOM--定位元素

JavaScript- 4.3 轮播图实现指南


目录

系列文章目录

前言

一、JavaScript中的Document对象详解

1、Document对象的基本概念

2、Document对象的主要属性和方法

[1. 访问元素](#1. 访问元素)

[2. 创建和添加元素](#2. 创建和添加元素)

[3. 修改DOM结构](#3. 修改DOM结构)

[4. 文档信息](#4. 文档信息)

[5. 文档就绪状态](#5. 文档就绪状态)

[6. 样式操作](#6. 样式操作)

[7. 类名操作](#7. 类名操作)

[8. 属性操作](#8. 属性操作)

[9. 数据属性](#9. 数据属性)

[10. 文档遍历](#10. 文档遍历)

3、现代DOM操作API

[1. insertAdjacentHTML](#1. insertAdjacentHTML)

[2. 文档片段(DocumentFragment)](#2. 文档片段(DocumentFragment))

[3. 模板元素(HTML Template)](#3. 模板元素(HTML Template))

4、事件处理

二、代码实践

1、九九乘法表

2、DOM操作--增删改复制移动

总结


前言

小编作为新晋码农一枚,会定期整理一些写的比较好的代码,作为自己的学习笔记,会试着做一下批注和补充,如转载或者参考他人文献会标明出处,非商用,如有侵权会删改!欢迎大家斧正和讨论!

一、JavaScript中的Document对象详解

Document对象是DOM(文档对象模型)的入口点,代表了整个HTML或XML文档。通过Document对象,JavaScript可以访问和操作网页的内容、结构和样式。

1、Document对象的基本概念

Document对象是window对象的一个属性,可以通过以下方式访问:

javascript

javascript 复制代码
// 标准方式
const doc = document;

// 或者通过window对象
const doc = window.document;

2、Document对象的主要属性和方法

1. 访问元素

通过ID获取元素

javascript

javascript 复制代码
const element = document.getElementById('elementId');

通过类名获取元素集合

javascript

javascript 复制代码
const elements = document.getElementsByClassName('className');

通过标签名获取元素集合

javascript

javascript 复制代码
const elements = document.getElementsByTagName('div');

通过CSS选择器获取元素

javascript

javascript 复制代码
// 获取第一个匹配的元素
const element = document.querySelector('.container');

// 获取所有匹配的元素
const elements = document.querySelectorAll('p.highlight');

2. 创建和添加元素

创建新元素

javascript

javascript 复制代码
const newDiv = document.createElement('div');

创建文本节点

javascript

javascript 复制代码
const textNode = document.createTextNode('Hello World');

添加元素到DOM

javascript

javascript 复制代码
// 追加到父元素的末尾
parentElement.appendChild(newDiv);

// 插入到特定位置
parentElement.insertBefore(newDiv, referenceElement);

3. 修改DOM结构

替换元素

javascript

javascript 复制代码
parentElement.replaceChild(newElement, oldElement);

移除元素

javascript

javascript 复制代码
parentElement.removeChild(childElement);
// 或者现代方式
childElement.remove();

克隆元素

javascript

javascript 复制代码
const clonedElement = element.cloneNode(true); // true表示深克隆

4. 文档信息

获取文档标题

javascript

javascript 复制代码
const title = document.title;

设置文档标题

javascript

javascript 复制代码
document.title = 'New Page Title';

获取文档URL

javascript

javascript 复制代码
const url = document.URL;

获取文档根元素

javascript

javascript 复制代码
const htmlElement = document.documentElement; // <html>元素

5. 文档就绪状态

检查文档是否加载完成

javascript

javascript 复制代码
document.readyState; // 返回"loading", "interactive"或"complete"

document.addEventListener('DOMContentLoaded', function() {
  // DOM已完全加载和解析
});

window.addEventListener('load', function() {
  // 所有资源(图片等)已加载完成
});

6. 样式操作

获取计算样式

javascript

javascript 复制代码
const styles = window.getComputedStyle(element);
const color = styles.getPropertyValue('color');

修改元素样式

javascript

javascript 复制代码
element.style.backgroundColor = 'red';
element.style.cssText = 'color: blue; font-size: 16px;'; // 批量设置

7. 类名操作

添加类

javascript

javascript 复制代码
element.classList.add('new-class');

移除类

javascript

javascript 复制代码
element.classList.remove('old-class');

切换类

javascript

javascript 复制代码
element.classList.toggle('active');

检查类是否存在

javascript

javascript 复制代码
const hasClass = element.classList.contains('some-class');

8. 属性操作

获取属性

javascript

javascript 复制代码
const value = element.getAttribute('data-id');

设置属性

javascript

javascript 复制代码
element.setAttribute('data-id', '123');

移除属性

javascript

javascript 复制代码
element.removeAttribute('disabled');

访问标准属性

javascript

javascript 复制代码
const href = anchorElement.href; // 比getAttribute('href')更推荐

9. 数据属性

HTML5数据属性(data-*)的特殊处理:

javascript

javascript 复制代码
// 设置数据属性
element.dataset.userId = '123'; // 对应data-user-id="123"

// 获取数据属性
const userId = element.dataset.userId;

10. 文档遍历

获取body元素

javascript

javascript 复制代码
const body = document.body;

获取head元素

javascript

javascript 复制代码
const head = document.head;

获取所有元素

javascript

javascript 复制代码
const allElements = document.getElementsByTagName('*');

3、现代DOM操作API

1. insertAdjacentHTML

javascript

javascript 复制代码
element.insertAdjacentHTML('beforebegin', '<div>Before</div>');
element.insertAdjacentHTML('afterbegin', '<div>After begin</div>');
element.insertAdjacentHTML('beforeend', '<div>Before end</div>');
element.insertAdjacentHTML('afterend', '<div>After</div>');

2. 文档片段(DocumentFragment)

javascript

javascript 复制代码
const fragment = document.createDocumentFragment();
// 添加多个元素到fragment
fragment.appendChild(element1);
fragment.appendChild(element2);
// 一次性添加到DOM
document.body.appendChild(fragment);

3. 模板元素(HTML Template)

html

html 复制代码
<template id="myTemplate">
  <div class="item">
    <h2></h2>
    <p></p>
  </div>
</template>

javascript

javascript 复制代码
const template = document.getElementById('myTemplate');
const content = template.content.cloneNode(true);
// 修改内容
content.querySelector('h2').textContent = 'Title';
content.querySelector('p').textContent = 'Description';
// 添加到DOM
document.body.appendChild(content);

4、事件处理

虽然事件处理通常与Element对象关联更紧密,但Document对象本身也可以处理事件:

javascript

javascript 复制代码
// 全局事件监听
document.addEventListener('click', function(event) {
  console.log('Document clicked', event.target);
});

// 事件委托
document.addEventListener('click', function(event) {
  if (event.target.matches('.button')) {
    console.log('Button clicked');
  }
});

Document对象是JavaScript与网页交互的核心接口,掌握其属性和方法对于动态网页开发至关重要。随着现代JavaScript和浏览器API的发展,DOM操作变得更加高效和便捷。

二、代码实践

1、九九乘法表

代码如下:

HTML

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>DOM-document对象</title>
	</head>
	<body>
		<pre>
			<script type="text/javascript">
				document.write("hello world");
				document.write("hello world");
			</script>
		</pre>
		<pre>
			<script type="text/javascript">
				document.writeln("hello world");//默认加了一个回车
				document.writeln("hello world");
			</script>
		</pre>
		<script type="text/javascript">
			//可以写html元素
			document.write("<h1>hello world</h1>");
			//乘法口诀表
			document.write("<table width='600px' border='1px'>");
			for (var i = 1; i <= 9; i++) {
				document.write("<tr>");
				for (var j = 1; j <= i; j++) {
					document.write("<td>");
					document.write(j + "*" + i + "=" + j * i);
					document.write("</td>");
				}
				document.write("</tr>");
			}
			document.write("</table>");
		</script>

	</body>
</html>

代码运行如下:

2、DOM操作--增删改复制移动

代码如下:

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>DOM操作--增删改复制移动</title>
		<style type="text/css">
			div {
				width: 50px;
				height: 50px;
				background-color: aqua;
			}
		</style>
	</head>
	<body>
		<a href="javascript:void(0);" onclick="create()">增加元素</a>
		<a href="javascript:void(0);" onclick="del()">删除元素</a>
		<a href="javascript:void(0);" onclick="replace()">替换元素</a>
		<a href="javascript:void(0);" onclick="copy()">复制元素</a>
		<a href="javascript:void(0);" onclick="move()">移动元素</a>
		<p class="p1">段落1</p>
		<p class="p2" id="id1">段落2</p>
		<p class="p3" id="id2">段落3</p>
		<div id="div1"></div>
		<script type="text/javascript">
			// 1. 增加
			function create() {
				// 1.创建元素节点 createlement
				// 2.添加内容或者属性
				// 3.放置在页面的某个父节点之下 appendchild
				var myp = document.createElement('p');
				myp.innerText = "段落4";
				// document.body.appendChild(myp);
				document.getElementById('id2').appendChild(myp);
			}
			// 2.删除
			function del() {
				var myp = document.getElementById('id1');
				// 删除时先找到父元素
				myp.parentNode.removeChild(myp);

			}
			// 3.替换
			function replace(){
				// 新元素
				var myImg = document.createElement('img');
				myImg.src="../img/1.jpg";
				// 旧元素
				var myp = document.getElementById('id2');
				myp.parentNode.replaceChild(myImg,myp);
			}
			// 4.复制
			function copy(){
				// 新元素
				// myDiv.cloneNode(true);
				// 旧元素
				var myDiv = document.getElementById('div1');
				document.body.appendChild(myDiv.cloneNode(true));
			}
			// 5.移动
			function move(){
				// 段落2和3换 insertbefore
				var p2 = document.getElementById('id1');
				var p3 = document.getElementById('id2');
				p2.parentNode.insertBefore(p3,p2);
			}
		</script>
	</body>
</html>

代码运行如下:


总结

以上就是今天要讲的内容,本文简单记录了Document对象,仅作为一份简单的笔记使用,大家根据注释理解

相关推荐
煤灰24215 分钟前
C++的多态与继承
开发语言·c++
小蒜学长27 分钟前
企业信息管理系统的设计与实现(代码+数据库+LW)
java·开发语言·数据库·spring boot·旅游
Echo``1 小时前
8:OpenCV—仿射变换和坐标映射
开发语言·图像处理·人工智能·qt·opencv·计算机视觉·命令模式
Yvonne爱编码1 小时前
JavaScript- 3.2 JavaScript实现不同显示器尺寸的响应式主题和页面
java·开发语言·前端·javascript·计算机外设·ecmascript
Tony小周1 小时前
QML与C++交互2
javascript·c++·交互
开开心心就好1 小时前
能按需拆分 PDF 为多个文档的工具
javascript·python·智能手机·django·pdf·word·excel
多多*1 小时前
中间件redis 功能篇 过期淘汰策略和内存淘汰策略 力扣例题实现LRU
linux·javascript·数据库·redis·sql·log4j·bootstrap
Java&Develop1 小时前
java 递归地复制文件夹及其所有子文件夹和文件
java·开发语言·windows
筱筱°1 小时前
Vue CLI创建vue项目,安装插件
前端·javascript·vue.js
Owen_Q2 小时前
AtCoder Beginner Contest 407
开发语言·c++·算法