【前端基础篇】JavaScript之DOM介绍1

简介: 【前端基础篇】JavaScript之DOM介绍

前言

在阅读过程中可以把代码片复制到vscode上去浏览器看实际效果,更易理解喔😘

WebAPI背景知识

什么是WebAPI

前面学习的 JS 分成三个大的部分

  • ECMAScript: 基础语法部分
  • DOM API: 操作页面结构
  • BOM API: 操作浏览器

WebAPI 就包含了 DOM + BOM. 这个是 W3C 组织规定的. (和制定 ECMAScript 标准的大佬们不是一伙人).

前面学的 JS 基础语法主要学的是 ECMAScript, 这让我们建立基本的编程思维. 相当于练武需要先扎马步. 但是真正来写一个更加复杂的有交互式的页面, 还需要 WebAPI 的支持. 相当于各种招式.


什么是API

API是一个更广义的概念,念. 而 WebAPI 是一个更具体的概念, 特指 DOM+BOM

所谓的 API 本质上就是一些现成的函数/对象, 让程序猿拿来就用, 方便开发.

相当于一个工具箱. 只不过程序猿用的工具箱数目繁多, 功能复杂.

API参考文档

Web API | MDN (mozilla.org)

可以在搜索引擎中按照 “MDN + API 关键字” 的方式搜索, 也能快速找到需要的 API 文档.


DOM基本概念

什么是DOM

什么是 DOM DOM 全称为 Document Object Model.

W3C 标准给我们提供了一系列的函数, 让我们可以操作:

  • 网页内容
  • 网页结构
  • 网页样式

DOM树

一个页面的结构是一个树形结构, 称为 DOM 树.

页面结构形如:

DOM树形结构形如:

重要概念:

  • 文档: 一个页面就是一个 文档, 使用 document 表示.
  • 元素: 页面中所有的标签都称为元素. 使用 element 表示.
  • 节点: 网页中所有的内容都可以称为节点(标签节点, 注释节点, 文本节点, 属性节点等). 使用 node 表示.

这些文档等概念在 JS 代码中就对应一个个的对象.

所以才叫 “文档对象模型” .


查找HTML元素

下面我们将介绍几种常见的DOM元素选择方法。

方法概览

方法 描述
document.getElementById(id) 通过元素 id 来查找元素。
document.getElementsByTagName(name) 通过标签名来查找元素。
document.getElementsByClassName(name) 通过类名来查找元素。
document.querySelector(CSS选择器) 通过CSS选择器选择一个元素。
document.querySelectorAll(CSS选择器) 通过CSS选择器选择多个元素。
1. document.getElementById(id)

getElementById 方法用于通过元素的 id 来查找并返回单个元素。这是最常用的方法之一,因为ID通常是唯一的。

示例代码

<!DOCTYPE html>
<html>
<head>
    <title>getElementById 示例</title>
</head>
<body>
    <div id="myDiv">这是一个 div 元素。</div>

    <script>
        var element = document.getElementById("myDiv");
        console.log(element.innerText);  // 输出: 这是一个 div 元素。
    </script>
</body>
</html>

getElementsByTagName 方法返回具有指定标签名的所有元素的集合(HTMLCollection)。该方法返回的是一个动态集合,意味着如果DOM发生变化,该集合也会更新。

2.document.getElementsByTagName(name)

示例代码

<!DOCTYPE html>
<html>
<head>
    <title>getElementsByTagName 示例</title>
</head>
<body>
    <p>这是第一个段落。</p>
    <p>这是第二个段落。</p>

    <script>
        var elements = document.getElementsByTagName("p");
        console.log(elements.length);  // 输出: 2
        console.log(elements[0].innerText);  // 输出: 这是第一个段落。
    </script>
</body>
</html>
3. document.getElementsByClassName(name)

getElementsByClassName 方法返回具有指定类名的所有元素的集合(HTMLCollection)。与 getElementsByTagName 类似,它返回的是一个动态集合。

示例代码

<!DOCTYPE html>
<html>
<head>
    <title>getElementsByClassName 示例</title>
</head>
<body>
    <div class="myClass">这是第一个 div 元素。</div>
    <div class="myClass">这是第二个 div 元素。</div>

    <script>
        var elements = document.getElementsByClassName("myClass");
        console.log(elements.length);  // 输出: 2
        console.log(elements[1].innerText);  // 输出: 这是第二个 div 元素。
    </script>
</body>
</html>
4. document.querySelector(CSS选择器)

querySelector 方法返回匹配指定CSS选择器的第一个元素。如果有多个匹配的元素,只返回第一个。

示例代码

<!DOCTYPE html>
<html>
<head>
    <title>querySelector 示例</title>
</head>
<body>
    <div class="container">
        <p>这是一个段落。</p>
        <p>这是另一个段落。</p>
    </div>

    <script>
        var element = document.querySelector(".container p");
        console.log(element.innerText);  // 输出: 这是一个段落。
    </script>
</body>
</html>
5. document.querySelectorAll(CSS选择器)

querySelectorAll 方法返回匹配指定CSS选择器的所有元素的静态集合(NodeList)。与 querySelector 不同,它返回所有匹配的元素。

示例代码

<!DOCTYPE html>
<html>
<head>
    <title>querySelectorAll 示例</title>
</head>
<body>
    <div class="container">
        <p>这是第一个段落。</p>
        <p>这是第二个段落。</p>
    </div>

    <script>
        var elements = document.querySelectorAll(".container p");
        console.log(elements.length);  // 输出: 2
        console.log(elements[1].innerText);  // 输出: 这是第二个段落。
    </script>
</body>
</html>

【前端基础篇】JavaScript之DOM介绍2:https://developer.aliyun.com/article/1617359

目录
相关文章
|
29天前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
1月前
|
JavaScript 前端开发 索引
js中DOM的基础方法
【10月更文挑战第31天】这些DOM基础方法是操作网页文档结构和实现交互效果的重要工具,通过它们可以动态地改变页面的内容、样式和行为,为用户提供丰富的交互体验。
|
26天前
|
JavaScript 前端开发 Java
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
springboot解决js前端跨域问题,javascript跨域问题解决
|
29天前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
41 5
|
27天前
|
缓存 前端开发 JavaScript
JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式
本文深入解析了JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式(Hash路由和History路由)、优点及挑战,并通过实际案例分析,帮助开发者更好地理解和应用这一关键技术,提升用户体验。
66 1
|
1月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
36 4
|
1月前
|
资源调度 前端开发 JavaScript
vite3+vue3 实现前端部署加密混淆 javascript-obfuscator
【11月更文挑战第10天】本文介绍了在 Vite 3 + Vue 3 项目中使用 `javascript-obfuscator` 实现前端代码加密混淆的详细步骤,包括安装依赖、创建混淆脚本、修改 `package.json` 脚本命令、构建项目并执行混淆,以及在 HTML 文件中引用混淆后的文件。通过这些步骤,可以有效提高代码的安全性。
|
1月前
|
JavaScript 前端开发 开发者
.js的dom元素操作
【10月更文挑战第29天】通过灵活运用这些 DOM 元素操作方法,JavaScript 可以实现丰富的网页交互效果,如动态更新页面内容、响应用户操作、创建和删除页面元素等。在实际开发中,开发者可以根据具体的需求和场景,选择合适的 DOM 元素操作方法来实现所需的功能,为用户提供更加流畅和动态的网页体验。
|
1月前
|
设计模式 前端开发 JavaScript
揭秘!前端大牛们如何巧妙利用JavaScript,打造智能交互体验!
【10月更文挑战第30天】前端开发领域充满了无限可能与创意,JavaScript作为核心语言,凭借强大的功能和灵活性,成为打造智能交互体验的重要工具。本文介绍前端大牛如何利用JavaScript实现平滑滚动、复杂动画、实时数据更新和智能表单验证等效果,展示了JavaScript的多样性和强大能力。
51 4
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
114 1
下一篇
DataWorks