JavaScript进阶:WebAPIs重点知识整理1

news2025/1/12 7:52:10

目录

1 DOM修改元素内容

2 DOM修改元素常见属性

3 修改元素样式属性

3.1 通过style修改元素样式

3.2 通过类名className修改元素样式

3.3 通过classList修改元素样式

4 操作表单元素属性

5 自定义属性

6 定时器

7 事件监听

7.1 点击事件 click

7.2 鼠mouseenter和移开事件mouseleave

7.3 焦点事件

7.4 键盘事件

7.5 用户输入事件 input

8 事件对象

8.1 通过事件对象获取按下了哪个键

9 补充

10 环境对象 this

11 回调函数

12 补充:伪类选择器

13 事件流

13.1 事件捕获

13.2 事件冒泡

13.3 阻止冒泡

14 解绑事件

14.1 onclick() 方法如何解绑事件

14.2 addEventListener() 方法解绑事件

15 事件委托

16 阻止默认行为

17 页面加载事件

18 页面滚动事件

18.1 元素滚动事件

18.2 页面尺寸事件

18.3 元素的尺寸和位置

18.3.1 获取宽高

18.3.2 获取位置

18.4 总结

19 补充:属性选择器

20 日期对象

20.1 实例化,获取相应的时间

20.2 日期对象中,常用的方法

20.3 获取当前时间戳


1 DOM修改元素内容

const b = document.querySelector('.box')

// 1. 对象.innerText = '新的文字内容';
b.innerText = '新的文字内容'
b.innerText = '<strong></strong>'   // 不解析标签


// 2. 对象.innerHTML = '新的文字内容';
b.innerHTML = '<strong>我是加粗的文字</strong>'   // 解析标签

 

2 DOM修改元素常见属性

    <div>
        <div class="box">我是文件内容</div>
        <img src="./girl.jpg" alt="">
    </div>
    <script>
        
        // 1.修改元素属性
        const img = document.querySelector('img');
        img.src = './girl2.jpg'
        img.alt = '美女加载失败'
        img.title="美女"
        
    </script>

 

3 修改元素样式属性

3.1 通过style修改元素样式

    <style>
        .box {
            width: 100px;
            height: 100px;
            background-color: pink;
        }
    </style>
</head>
<body>
    <div class="box"></div>

    <script>
        const box = document.querySelector('.box')

        box.style.width = '200px' // 修改元素的宽度为200px, 一定要带单位!!!
        box.style.backgroundColor = 'red' // 修改元素的背景颜色为红色, 需要用 小驼峰 命名
        box.style.border = '3px solid black'
    </script>

3.2 通过类名className修改元素样式

元素.className = '类名'
className: 会覆盖之前的类的样式

3.3 通过classList修改元素样式

classList 可以解决覆盖以前的类名的问题

元素.classList.add('类名')    类名前不用加 .
元素.classList.remove('类名')
元素.classList.toggle('类名')  切换类: 有就删掉,没有就加上

 

4 操作表单元素属性

1. 获取:表单.value

2. 设置:表单.value = '新的值'

3. 修改表单的类型
    <input type="text" value="请输入用户名">
    const input = document.querySelector('input')
    input.type = 'password'


    // checked 属性  disabled 属性
    <input type="checkbox" name="" id="">
    <button>点击</button>
    <script>
        const input = document.querySelector('input');

        console.log(input.value)  // 1.获取表单的值

        input.value = '222'  // 2.修改input的值
        // input.type = "password"  // 2.修改input的类型

        const input = document.querySelector('input')
        console.log(input.checked)  // 获取input的选中状态
        input.checked = true  // 修改input的选中状态

        const button = document.querySelector('button')
        button.addEventListener('click', function() {
            button.disabled = true  // 禁用按钮
        })
    </script>

 

5 自定义属性

    // data-  开头的全部都是自定义属性
    <div data-id="1" data-spm="hhh" data-scm="yyy">01</div> 
    <div data-id="2">02</div>
    <div data-id="3">03</div>
    <div data-id="4">04</div>
    <div data-id="5">05</div>

    <script>
        const one = document.querySelector('div')
        console.log(one.dataset.id)   // 通过这个获取自定义属性的值
        console.log(one.dataset.spm)
    </script>

 

6 定时器

    <script>
        // setInterval(函数, 时间)  时间单位为毫秒
        let time= setInterval(function() {
            console.log('hello world')  // 每隔3秒执行一次函数,函数内容为打印hello world;
        },3000)

        // 上述定时器赋给变量time, 返回的是数字型,是定时器的id 号,每个定时器都是独一无二的

        clearInterval(time)  // 清除定时器,传入定时器的id号

    </script>

 

7 事件监听

语法:

    元素对象.addEventListener('事件类型', 事件处理函数)

下面的事件直接给出实例 

7.1 点击事件 click

随机点名案例:

 

 

js中也有可以直接调用的点击事件   click()

 

7.2 鼠mouseenter和移开事件mouseleave

7.3 焦点事件

7.4 键盘事件

7.5 用户输入事件 input

通过input事件,可以实时获取到用户输入的内容

 

8 事件对象

8.1 通过事件对象获取按下了哪个键

e.key 

 

9 补充

处理字符串的方法 trim():去除字符串前后空格  如果用户输入的是空格,则直接清空,值就变为空了

当页面中有滚动事件时,让其丝滑滚动 

 

 

10 环境对象 this

function fn() {
    console.log(this)
    // 1. 普通函数中,this 指向window
}




const btn = document.querySelector('button')
btn.addEventListener('click', fn) {
    // 2. 事件处理函数中,this 指向事件源对象
    console.log(this)  // 这边this指向button
}

总结:this指向函数的调用者 

 

11 回调函数

 

12 补充:伪类选择器

:checked

 

13 事件流

事件流的两个阶段:

    1.捕获阶段:从外向内(父到子)

    2.冒泡阶段:从内向外(子到父)

13.1 事件捕获

    <!-- 1.事件捕获 -->
    <div class="fan">
        <div class="son"></div>
    </div>

    <script>
        const fan = document.querySelector('.fan')
        const son = document.querySelector('.son')

        document.addEventListener('click', function() {
            alert('点击了页面')
        },true)  // true 表示事件捕获, 若为false 表示事件冒泡,默认为false

        fan.addEventListener('click', function() {
            alert('点击了父元素')
        },true)

        son.addEventListener('click', function() {
            alert('点击了子元素')
        },true)
    </script>

13.2 事件冒泡

13.3 阻止冒泡

语法:

    事件对象.stopPropagation()

  (此方法可以阻断事件流动传播,不光在冒泡阶段有效,捕获阶段也有效)

     e.stopPropagation()  // 阻止事件冒泡


 

 

14 解绑事件

14.1 onclick() 方法如何解绑事件

14.2 addEventListener() 方法解绑事件

removeEventListener()

 

15 事件委托

优点:减少了事件的注册次数,可以提高程序性能

原理:事件委托其实是利用事件冒泡的特点

--->>>  给父元素注册事件,当我们触发子元素的时候,会冒泡到父元素的身上,从而触发父元素的事件

    <ul>
        <li>第1个孩子</li>
        <li>第2个孩子</li>
        <li>第3个孩子</li>
        <li>第4个孩子</li>
        <li>第5个孩子</li>

        <p>uuu</p>
    </ul>

    <script>
        // 1.获取父元素
        const ul = document.querySelector('ul')
        ul.addEventListener('click', function(e) {
            // alert('点击了li')
            // e.target 获取当前点击的对象
            e.target.style.backgroundColor = 'red'  // 改变点击的li的背景颜色为红色

            // 我们指向点击li进行变色, 不让标签p 变色
            // 2.判断点击的元素是否为li  可以指定元素对象进行变色
            if (e.target.tagName === 'LI') {  // tagName 获取标签名
                // 3.是li 修改背景颜色
                e.target.style.backgroundColor = 'pink'
            }
        })
    </script>

 

16 阻止默认行为

e.preventDefault()   ->  注意和前面的阻止冒泡区分下

    <form action="http://www.itcast.cn">
        <input type="submit" value="免费注册">
    </form>
    <a href="http://www.baidu.com">百度</a>
    <script>
        const form = document.querySelector('form')  // 获取form元素
        form.addEventListener('submit', function(e) {
            e.preventDefault()  // 阻止默认行为 
        })

        const a = document.querySelector('a')
        a.addEventListener('click', function(e) {
            e.preventDefault()  // 阻止默认行为 
        })
    </script>

 

17 页面加载事件

    <button>按钮</button>
    <script>
        // 1.页面加载事件
        // 1.1 等到资源都加载完了,在执行js代码,这样的话script标签可以放在页面的任何位置
        // 等待页面所有资源都加载完毕了,就回去执行回调函数
        window.addEventListener('load', function(){
            const btn = document.querySelector('button')

            btn.addEventListener('click', function() {
                alert('点击了')
            })
        })



        // 1.2 也可以等待具体的元素加载完毕,再去执行相应的代码
        // 等待id为one的元素加载完毕,再去执行回调函数
        img.addEventListener('load', function(){
            //...
        })




        // 1.3 DOMContentLoaded事件
        // 只等待dom结点加载完毕,不等待图片、视频等资源加载完毕
        document.addEventListener('DOMContentLoaded', function(){
            //...
        })
        // 注意:DOMContentLoaded事件比load事件更快一些
    </script>

 

18 页面滚动事件

18.1 元素滚动事件

scrollLeft 和 scrollTop 属性可以获取页面滚动的位置,scrollLeft获取水平滚动的位置,scrollTop获取垂直滚动的位置。

  <script>
        window.addEventListener('scroll', function(){
            console.log('滚动了')
        

        // 1.获取页面滚动到哪个位置
        // scrollLeft 和 scrollTop 属性可以获取页面滚动的位置,scrollLeft获取水平滚动的位置,scrollTop获取垂直滚动的位置。
        // 注意:这两个属性只有当有滚动条的时候才能获取到值,否则获取到的都是0
        // 获取被卷去的大小
        // 获取元素内容往左  往上滚出去看不到的距离
        // 这两个值是可读写的
            const div = document.querySelector('div')
            console.log(div.scrollTop)
            



            // 2. 获取html元素的写法
            // document.documentElement.scrollTop  检测页面被卷去的距离
            console.log(document.documentElement.scrollTop) // html滚动的位置



            // 3. 返回顶部
            const backToTop = document.querySelector('backToTop') // 获取返回顶部的元素
            // 给返回顶部元素添加点击事件,点击时把页面滚动到顶部位置,滚动到0的位置,就是滚动到顶部位置。
            backToTop.addEventListener('click', function(){
                // 设置滚动的位置
                document.documentElement.scrollTop = 0
                // 或者
                // window.scrollTo(0, 0)
            })
        })
    </script>

18.2 页面尺寸事件

clientWidth 和 clientHeight 属性可以获取元素可见部分的宽度和高度

   <div></div>
    <script>
        // 1. clientWidth 和 clientHeight 属性可以获取元素可见部分的宽度和高度。
        const div = document.querySelector('div') // 获取div元素
        console.log(div.clientWidth) // 获取div元素的可见部分的宽度
        console.log(div.clientHeight) // 获取div元素的可见部分的高度


        // resize 事件会在窗口或框架被调整大小时触发。
        window.addEventListener('resize', function(){
            console.log(document.documentElement.clientWidth);
        })
    </script>

18.3 元素的尺寸和位置

18.3.1 获取宽高

 offsetWidth 和 offsetHeight:

        1.获取元素的自身宽高,包含元素自身设置的宽高, padding, border等

        2. 注意:获取的是可视宽高,如果盒子是隐藏的,获取的结果是 0,

18.3.2 获取位置

方式1:offsetLeft 和 offsetTop

获取元素距离自己定位父级元素的左, 上距离offsetLeft 和 offsetTop 为只读属性。比如一个窗口中有两个盒子,小盒子在大盒子的里面,如果,大盒子有定位; 那么小盒子相对于大盒子定位,小盒子距离大盒子左, 上距离; 如果大盒子没有定位,那么小盒子相对于窗口定位,小盒子距离窗口左, 上距离;

方式2:getBoundingClientRect()

element.getBoundingClientRect() 方法返回元素的大小及其相对于视口的位置。

18.4 总结

19 补充:属性选择器

 

20 日期对象

20.1 实例化,获取相应的时间

        // 1.得到当前时间
        const date  = new Date()
        console.log(date)


        // 2.得到指定时间
        const date1 = new Date('2024-01-01 00:00:00')
        console.log(date1)

 20.2 日期对象中,常用的方法


        // 1. 日期对象的一些方法
        let year = date.getFullYear()
        let month = date.getMonth() + 1
        let day = date.getDate()
        let hours = date.getHours()
        let minutes = date.getMinutes()
        let seconds = date.getSeconds()
        let xq = date.getDay()  // 0-6  0代表周日
        // console.log(year, month, day, hours, minutes, seconds)

        // 月份和天数前面补零操作
        month = month < 10 ? '0' + month : month
        day = day < 10 ? '0' + day : day
        console.log(`${year}-${month}-${day}`)


        // 2. 也可以通过这种方式获取简单形式的时间
        console.log(date.toLocaleString())  //  2024/1/20 20:14:26
        console.log(date.toLocaleDateString())   //   2024/1/20
        console.log(date.toLocaleTimeString())   //  20:14:51

20.3 获取当前时间戳

因为时间是不方便相加减的,所以我们需要获取当前时间或指定时间对应的时间戳(单位为毫秒),利用时间戳来相加减,典型案例就是倒计时案例

       // 方式1: getTime()
        // 用这种方法首先需要实例化日期对象
        const date2 = new Date()
        const time1 = date2.getTime()
        // console.log(time1)
        console.log('--------------')


        // 方式2: +new Date()
        console.log(+new Date())
        // 返回指定时间的时间戳
        console.log(+new Date('2024-01-01 18:30:00'))
        console.log('--------------')


        // 方式3: Date.now()
        console.log(Date.now())
        // 但是这种方式只能得到当前的时间戳,而前面两种方式可以得到指定时间的时间戳



注意上述的天时分秒是如何换算得到的

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

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

相关文章

【数据结构】 双链表的基本操作 (C语言版)

目录 一、双链表 1、双链表的定义&#xff1a; 2、双链表表的优缺点&#xff1a; 二、双链表的基本操作算法&#xff08;C语言&#xff09; 1、宏定义 2、创建结构体 3、双链表的初始化 4、双链表表插入 5、双链表的查找 6、双链表的取值 7、求双链表长度 8、双链表…

华南理工大学数字信号处理实验实验一(薛y老师版本)matlab源码

一、实验目的 1、加深对离散信号频谱分析的理解&#xff1b; 2、分析不同加窗长度对信号频谱的影响&#xff1b; 3、理解频率分辨率的概念&#xff0c;并分析其对频谱的 影响&#xff1b; 4、窗长和补零对DFT的影响 实验源码&#xff1a; 第一题&#xff1a; % 定义离散信…

C++函数对象-函数包装器-调用空的 std::function 时抛出的异常(std::bad_function_call)

任何定义了函数调用操作符的对象都是函数对象。C 支持创建、操作新的函数对象&#xff0c;同时也提供了许多内置的函数对象。 函数包装器 std::function 提供存储任意类型函数对象的支持。 用空的 std::function 时抛出的异常 std::bad_function_call class bad_function_cal…

【C++】命名空间(namespace)

文章目录 1. 为什么要有命名空间?2. 命名空间介绍3.命名空间三种使用方式4. 注意 1. 为什么要有命名空间? 在C语言中&#xff0c;局部变量和全局变量如果同名&#xff0c;在使用时可能会造成冲突。这并不是想避免就能避免的&#xff0c;在程序中&#xff0c;不仅仅是变量&…

《WebKit 技术内幕》之八(2):硬件加速机制

2 Chromium的硬件加速机制 2.1 GraphicsLayer的支持 GraphicsLayer对象是对一个渲染后端存储中某一层的抽象&#xff0c;同众多其他WebKit所定义的抽象类一样&#xff0c;在WebKit移植中&#xff0c;它还需要具体的实现类来支持该类所要提供的功能。为了完成这一功能&#x…

系统架构设计师教程(十三)层次式架构设计理论与实践

层次式架构设计理论与实践 13.1 层次式体系结构概述13.2 表现层框架设计13.2.1 表现层设计模式13.2.2 使用XML设计表现层&#xff0c;统一Web Form与Windows Form的外观13.2.3表现层中UIP设计思想13.2.4 表现层动态生成设计思想 13.3 中间层架构设计13.3.1 业务逻辑层组件设计1…

【Elasticsearch】索引恢复(recovery)流程梳理之副本分片数据恢复

replica shard重启具体流程 replica shard node &#xff08;generic threadpool&#xff09; 也是因为应用新的集群状态触发recovery&#xff0c;进入index阶段进入translog 阶段。先尝试重放本地的translog到global checkpoint向primary shard发起start recovery的请求&…

JVM对象创建与内存回收机制

对象的创建过程有如下步骤&#xff1a; 1.类加载检查&#xff1a; 虚拟机遇到一个new指令时&#xff0c;首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否已被加载、解析和初始化过&#xff0c;如果没…

【golang】Context超时控制与原理

Context 在Go语言圈子中流行着一句话&#xff1a; Never start a goroutine without knowing how it will stop。 翻译&#xff1a;如果你不知道协程如何退出&#xff0c;就不要使用它。 在创建协程时&#xff0c;我们可能还会再创建一些别的子协程&#xff0c;那么这些协程的…

【书籍】强化学习第二版(英文版电子版下载、github源码)-附copilot翻译的中英文目录...

Python代码&#xff1a;https://github.com/ShangtongZhang/reinforcement-learning-an-introduction 英文原版书籍下载&#xff1a;http://incompleteideas.net/book/the-book-2nd.html 作者&#xff1a; 理查德S萨顿是阿尔伯塔大学计算机科学教授和强化学习与人工智能 AITF 主…

1.6万字全面掌握 BERT:自然语言处理(NLP)从初学到高级的全面指南

BERT&#xff08;双向编码器表示来自Transformer的模型&#xff09;是由Google开发的一种革命性的自然语言处理&#xff08;NLP&#xff09;模型。它改变了语言理解任务的格局&#xff0c;使机器能够理解语言中的上下文和细微差异。 在本博客中&#xff0c;我们将带您从 BERT …

信息安全概述

信息安全&#xff1a;防止任何对数据进行未授权访问的措施&#xff0c;或者防止造成信息有意无意泄漏、破坏、丢失等问题的发生&#xff0c;让数据处于远离危险、免于威胁的状态或特性。 网络安全&#xff1a;计算机网络环境下的信息安全。 信息安全现状及挑战 数字化时代威…

什么是VUE 创建第一个VUE实例

一、什么是Vue 概念&#xff1a;Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套 构建用户界面 的 渐进式 框架 Vue2官网&#xff1a;Vue.js 1.什么是构建用户界面 基于数据渲染出用户可以看到的界面 2.什么是渐进式 所谓渐进式就是循序渐进&#xff0c;不一定非得把Vu…

Docker编译多平台文件、构建多平台镜像并运行

参考官方文档&#xff1a; Multi-stageMulti-platformMulti-platform images 文章目录 方法Buildx 设置使用QEMU仿真编译文件构建镜像 使用交叉编译&#xff08;cross-compilation&#xff09;编译文件构建镜像 在x86_64上运行arm64容器 方法 如果在 x86_64/amd64 的平台上&am…

Docker 操作之数据卷挂载【云原生】

文章目录 1. 镜像1.1 基本命令1.2 案例练习 2. 容器2.1 基本命令2.2 Nginx 案例2.3 Redis 案例 3. 数据卷3.1 基本命令3.2 Nginx 案例3.3 MySQL 案例 1. 镜像 镜像命令一般分两部分组成&#xff1a;repository:tag。比如 mysql:5.7&#xff0c;表示名称加版本。 在没有指定 t…

一文掌握Python所有常见的循环用法

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 循环是编程中的重要概念&#xff0c;它允许我们重复执行一组操作&#xff0c;直到满足某个条件。Python提供了多种类型的循环&#xff0c;以适应不同的需求和场景。本文将详细介绍Python中所有常见的循环用法&am…

MySQL下对[表]的操作数据类型

目录 表的操作 创建表&#xff1a; 查看表结构&#xff1a; 修改表&#xff1a; 删除表&#xff1a; 数据类型 数据类型分类&#xff1a; 数值类型&#xff1a; tinyint类型越界测试&#xff1a; bit类型&#xff1a; 小数类型&#xff1a; 字符串类型&#xff1a; …

JAVA中 Lambda 方法引用 算法

算法和数据结构 一、Arrays类 接下来学习的类叫做Arrays&#xff0c;其实Arrays并不是重点&#xff0c;但是我们通过Arrays这个类的学习有助于我们理解下一个知识点Lambda的学习。所以我们这里先学习Arrays&#xff0c;再通过Arrays来学习Lamdba这样学习会更丝滑一些_. 1.1 …

【Qt Quick 项目(第一集Qt Quick UI 项目项目创建)】

# Qt Quick 项目 到底什么是Qt Qml、什么是Qt Quick、QtQuick应用程序与Qt Widget程序有何区别,为了让读者在学习QML之前有一个整体认识,这里先介绍几个Quick项目。 01 Qt Quick UI 项目

Java8的Stream最佳实践

从这一篇文章开始&#xff0c;我们会由浅入深&#xff0c;全面的学习stream API的最佳实践&#xff08;结合我的使用经验&#xff09;&#xff0c;本想一篇写完&#xff0c;但写着写着发现需要写的内容太多了&#xff0c;所以分成一个系列慢慢来说。给大家分享我的经验的同时&a…