JavaScript-3

news2024/9/28 1:27:09

Web API 基本认知

作用和分类

  • 作用:就是使用 JS 去操作 html 和 浏览器
  • 分类:DOM ( 文档对象模型 )、BOM ( 浏览器对象模型 )

DOM 是什么

  • DOM ( Document Object Model —— 文档对象模型 )
  • 它是用来呈现以及与任意 HTML 或 XML 文档交互的 API
  • 通俗的说,DOM 是浏览器提供的一套专门用来"操作网页内容"的功能

DOM 树

  • 什么是 DOM 树:将HTML文档以树状结构直观表现出来,我们称之为文档树或DOM树

  • 作用:文档树直观的体现了标签与标签之间的关系

在这里插入图片描述

DOM 对象

Dom 的思想核心:把网页内容当作对象来处理

  • 浏览器根据 html 标签生成的 JS 对象
  • 所有的标签属性都可以在这个对象上面找到
  • 修改这个对象的属性会自动映射到标签身上

document 对象

  • 是 DOM 里面提供的一个对象
  • 用来访问和操作网页内容
  • 网页所有内容都在 document 里面

获取 DOM 对象

  • 方式一:根据 CSS 选择器来获取 DOM 元素(重点)
  • 方式二:其他获取 DOM 元素方法(了解)

方式一

具体内容

  • 成功匹配的所有元素中,取第一个元素
语法:
	document.querySelector('CSS选择器')

返回值:CSS选择器匹配成功的所有元素中的第一个元素,是一个HTMLElement对象
  • 成功匹配的所有元素中,取所有元素
语法:
	document.querySelectorAll('CSS选择器')

返回值:CSS选择器匹配成功的所有元素,是一个装有HTMLElement对象的数组

演示部分

<body>
    <div>111</div>
    <div>222</div>
    <div class="box">aaa</div>
    <div class="box">bbb</div>
    <div class="box">ccc</div>
    <div id="d1">ddd</div>
    <ul>
        <li>li-1</li>
        <li>li-2</li>
        <li>li-3</li>
    </ul>

    <script>
        const a = document.querySelector('.box')
        console.log(a);

        const d = document.querySelector('#d1')
        console.log(d);

        const li = document.querySelector('li')
        console.log(li);

        const lis = document.querySelectorAll('ul li')
        console.log(lis);
    </script>
</body>

方式二

    <script>
        // 根据id获取一个元素
        document.getElementById('nav')
        // 根据'标签名'获取一类元素
        document.getElementsByTagName('div')
        // 根据'类名'获取对应元素
        document.getElementsByClassName('box')
    </script>

操作元素内容

innerText

<body>
    <div>欢迎光临</div>
    <div class="box">我是Peter</div>
    <div class="top">搜索框</div>
    
    <script>
        // 1. 获取元素对象
        const box = document.querySelector('.box')

        // 2. 修改文字内容
        console.log(box.innerText);     // 输出内容:我是Peter
        box.innerText = '我是Jack'      // 注意:innerText 只显示纯文本,不解析标签
        // 例如:box.innerText = '<strong>我是Jack</strong>' 是解析不了标签的
    </script>
</body>

innerHTML

<body>
    <div>欢迎光临</div>
    <div class="box">我是Peter</div>
    <div class="top">搜索框</div>

    <script>
        // 1. 获取元素对象
        const box = document.querySelector('.box')

        // 2. 修改文字内容
        box.innerHTML = '<strong>我是Jack</strong>'
    </script>
</body>

操作元素属性

操作元素的常用属性

<body>
    <img src="./images/img2.png" alt="">

    <script>
        // 1. 获取图片对象
        const img = document.querySelector('img')

        // 2. 修改图片对象的属性值
        img.src = './images/img3.png'
    </script>
</body>

操作元素的样式属性

方式一

  • 通过 style 属性操作 CSS
<body>
    <div class="box"></div>

    <script>
        // 1. 获取对象
        const box = document.querySelector('.box')

        // 2. 修改对象的样式的属性值
        box.style.width = '300px'
        box.style.backgroundColor = 'green'
    </script>
</body>

方式二

  • 操作类名 ( className ) 操作 CSS
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            width: 200px;
            height: 200px;
            background-color: pink;
        }

        .active {
            margin: 0 auto;
            width: 300px;
            height: 300px;
            background-color: bisque;

        }

        .radius {
            border-radius: 50%;
        }
    </style>
</head>

<body>
    <div class="box"></div>

    <script>
        // 1. 获取对象
        const box = document.querySelector('.box')

        // 2. 通过改'类名'的方式,去修改对象的样式
        box.className = 'active radius'
    </script>
</body>

方式三(重点)

  • 通过 classList 操作类控制 CSS

    作用:为了解决 className 容易覆盖以前的类名,我们可以通过 classList方式追加和删除类名

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            width: 200px;
            height: 200px;
            background-color: pink;
        }

        .active {
            margin: 0 auto;
            width: 300px;
            height: 300px;
            background-color: bisque;

        }

        .radius {
            border-radius: 50%;
        }
    </style>
</head>

<body>
    <div class="box"></div>

    <script>
        // 1. 获取对象
        const box = document.querySelector('.box')

        // 追加一个类
        box.classList.add('active')
        // 删除一个类
        box.classList.remove('active')
        // 切换一个类
        // 判断这个类有没有,有就删掉,没有就加上,即:类似'取反'的效果
        box.classList.toggle('radius')
    </script>
</body>

操作表单元素属性

标准属性

  • 标签天生自带的属性,比如 class、id、title 等,可以直接使用点语法操作,比如:disabled、checked、selected
<body>
    <input type="text" value="电脑">

    <script>
        const ipt = document.querySelector('input')
        ipt.value = '书包'
    </script>
</body>
<body>
    <input type="checkbox" name="" id="" checked>

    <script>
        const ipt = document.querySelector('input')
        ipt.checked = false
    </script>
</body>
<body>
    <button disabled>点击</button>

    <script>
        const btn = document.querySelector('button')
        btn.disabled = false
    </script>
</body>

自定义属性(重点)

  • 在 html 5 中推出来了专门的 data-自定义属性
  • 在标签上一律以 data- 开头
  • 在 DOM 对象上一律以 dataset 对象方式获取
<body>
    <div data-id="haha" data-spm="run">第1个</div>
    <div>第2个</div>
    <div>第3个</div>

    <script>
        const one = document.querySelector('div')
        console.log(one.dataset.id);    // haha
        console.log(one.dataset.spm);   // run
    </script>
</body>

定时器

间歇函数

使用场景

    网页中经常会需要有一种功能:每隔一段时间需要自动执行一段代码,不需要我们手动去触发
    例如:网页中的倒计时
    定时器函数可以开启和关闭定时器

开启定时器

	语法:
		setInterval(函数, 间隔时间)

	作用:
		每隔一段时间调用这个函数(间隔时间单位:毫秒)
    <script>
        // 开启定时器的方式一:
        setInterval(function () {
            document.write('匹配成功 <br>')
        }, 1000)

        // 开启定时器的方式二:
        function add() {
            document.write('任务完成 <br>')
        }

        setInterval(add, 2000)	// 开启
    </script>

关闭定时器

	语法:
		let 变量名 = setInterval(函数, 间隔时间)
		clearInterval(变量名)

	作用:
		当满足某些条件时,关闭定时器
    <script>
        let n = setInterval(function () {
            document.write('匹配成功 <br>')
        }, 1000)

        console.log(n)  // 变量里面存的是独一无二的定时器序号,这个序号是为了避免多个定时器互相干涉
        
        // 关闭定时器
        clearInterval(n)
    </script>

具体案例

<body>
    <textarea name="" id="" cols="30" rows="10">
        《用户注册协议》
        您确认所有服务条款并完成注册程序时
        本协议在您与本网站间成立并发生法律效力
        同时您成为本网站正式用户
    </textarea>
    <br>
    <button class="btn" disabled>我已经阅读用户协议 (5s)</button>

    <script>
        const btn = document.querySelector('.btn')
        let second = 5   // 倒计时秒数
        let n = setInterval(function () {
            second--
            btn.innerHTML = `我已经阅读用户协议 (${second}s)`

            if (second === 0) {
                clearInterval(n)
                btn.innerHTML = `我同意该协议`
                btn.disabled = false
            }
        }, 1000)
    </script>
</body>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1379643.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析求职-知识脑图

今天和大家聊聊数据分析求职常见面试题&#xff0c;这是这个系列的第一篇文章&#xff0c;但是我不想开始就直接罗列题目&#xff0c;因为这样的文章实在太多了&#xff0c;同学们的兴趣程度肯定一般。所以&#xff0c;我想先和大家聊聊在准备面试题时候通常遇到的困扰&#xf…

部署 LVS-DR 群集

本章内容&#xff1a; -了解LVS-DR群集的工作原理 -会构建LVS-DR负载均衡群集 2.1 LVS-DR 集群 LVS-DR &#xff08; Linux Virtual Server Director Server &#xff09;工作模式&#xff0c;是生产环境中最常用的一 种工作模式。 2.1.1 &#xff0e; LVS-DR 工作原理 …

【C++】基础:STL字符串库string

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍STL字符串库string。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷路&am…

【Maven】004-基于 IDEA 构建 Maven 工程

【Maven】004-基于 IDEA 构建 Maven 工程 文章目录 【Maven】004-基于 IDEA 构建 Maven 工程一、概述1、项目构建2、命令方式项目构建命令war 包打包插件和 jdk 版本不匹配 二、项目构建1、命令方式2、IDEA 可视化方式3、构建产物 一、概述 1、项目构建 项目构建是将软件开发…

数据结构初探:揭开数据结构奥秘

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、算法模板、汇编语言 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 数组结构起源二. 基本概念和术语2.1 数据2.2 数据元素2.3 数据项2.4 …

点的旋转变换

情形一&#xff08;active or alibi transformation主动变换&#xff09; 在坐标系 x − y x-y x−y中&#xff0c;点 p 1 p_1 p1​逆时针旋转 α \alpha α后到达点 p 2 p_2 p2​。 p 1 p_1 p1​在 x − y x-y x−y中的表示与 p 2 p_2 p2​在 x ′ − y ′ x-y x′−y′中的表…

C# Cad2016二次开发HelloWorld(一)

1 新建类库 二 引用 acdbmgd.dll、acmgd.dll、accoremgd.dll 三 HelloWorld代码 public class Class1{/// <summary>/// 程序入口标识/// </summary>[CommandMethod("HelloWorld")]public void HelloWorld(){Document adoc Autodesk.AutoCAD.Applicatio…

将WAP网站封装成App体验的全新策略

一、传统的App封装方式 传统的App封装技术通常依赖于WebView组件&#xff0c;将WAP内容嵌入到一个原生App框架中。这种方法虽然可以快速实现WAP到App的转换&#xff0c;但存在着明显的缺陷&#xff1a;首先&#xff0c;WebView的性能和用户体验都无法与原生组件相提并论&#x…

STM32H5培训(一)总览

文章目录 1. 前言2. STM32H5系列MCU的特点和新功能包括性能提升、新外设和安全功能等3. STM32H5系列型号之间的区别和关键资源对比4. 性能和功能亮点6. 开发生态参考&#xff1a; 1. 前言 本篇主要介绍STM32H5系列MCU的特点和新功能&#xff0c;包括全新的M33内核、250M主频处…

【GNN2】PyG完成图分类任务,新手入门,保姆级教程

上次讲了如何给节点分类&#xff0c;这次我们来看如何用GNN完成图分类任务&#xff0c;也就是Graph-level的任务。 【GNN 1】PyG实现图神经网络&#xff0c;完成节点分类任务&#xff0c;人话、保姆级教程-CSDN博客 图分类就是以图为单位的分类&#xff0c;举个例子&#xff1…

初识 Elasticsearch 应用知识,一文读懂 Elasticsearch 知识文集(1)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

150套简约流行国内外优秀网页模板打包 /个人主页网站html模板 /html+css网页设计源码(分享)

这里把自己收藏的最新150套简约流行国内外优秀网页模板打包分享给大家&#xff0c;如果有用请点赞收藏&#xff0c;无密源码&#xff0c;直接拿来就可以用的。它是htmlcss网页设计源码&#xff0c;html5网页静态模板。 我分了品类&#xff0c;按行业或应用场景&#xff0c;不但…

unity C#深拷贝、浅拷贝、直接赋值区别与经典实例

文章目录 浅拷贝深拷贝浅拷贝和直接赋值有啥区别 在C#中&#xff0c;浅拷贝&#xff08;Shallow Copy&#xff09;和深拷贝&#xff08;Deep Copy&#xff09;是两种不同级别的对象复制方式。它们的区别主要体现在处理引用类型字段时的行为。 浅拷贝 浅拷贝是指复制对象时&…

git修改历史(非最新)提交信息

二、修改最近第二次或更早之前的commit信息 当前有三次提交&#xff0c;从近到远分别为1、2、3 以修改第2次提交为例&#xff08;从最新往前数&#xff09; 1、使用命令git rebase -i HEAD~2 按i进入编辑模式&#xff0c;将对应的pick改为edit&#xff0c;然后ctrlc退出。最…

如何用ChatGPT写教案设计?以“沁园春雪”为例

1. 引言 随着人工智能技术的飞速发展&#xff0c;ChatGPT已成为教育领域的一大创新工具。ChatGPT不仅能够模拟人类对话&#xff0c;还可以帮助设计互动丰富、内容丰富的教案。本文将探索如何利用ChatGPT进行教案教学设计&#xff0c;特别是通过“沁园春雪”这一案例&#xff0…

版本控制系统教程

1.Git的基本介绍 1.1 Git的概念 Git是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目.Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件.Git与常用的版本控制工具CVS&#xff0c;Subversion等不同&#xff…

Vue-17、Vue人员列表过滤(案例)

1、watch实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>列表渲染过滤</title><script type"text/javascript" src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.js&qu…

恭喜:ChatGPT之父与相恋多年的男友结婚,并希望早日生娃。。。

OpenAI CEO Sam Altman与伴侣Oliver Mulherin海边私密婚礼&#xff1a;爱情、事业与人工智能领域的交织 婚礼主持人是奥特曼的兄弟杰克奥尔特曼 壹.媒体流传 在科技界掀起波澜的OpenAI首席执行官萨姆奥尔特曼&#xff08;Sam Altman&#xff09;&#xff0c;近期与他长久以来的…

Linux第27步_在虚拟机中安装“设备树编译工具”

设备树英文名字叫做Device tree&#xff0c;用来描述板子硬件信息的&#xff0c;比如开发板上的 CPU有几个核 、每个CPU核主频是多少&#xff0c;IIC、SPI这些外设的寄存器范围是多少&#xff0c;IIC接口下都挂了哪些设备等等。 设备树文件是一种文本格式的文件&#xff0c;方…

VirtualBox安装linuxmint-21.2虚拟机并配置网络

VirtualBox安装linuxmint-21.2虚拟机并配置网络 适用于在VirtualBox平台上安装linuxmint-21.2虚拟机。 1. 安装准备 1.1 安装平台 Windows 11 1.2. 软件信息 软件名称软件版本安装路径Oracle VM VirtualBoxVirtualBox-7.0.12-159484D:\softwareCentOS7CentOS-7.9.2009E:\…