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

目录

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('类名')  切换类: 有就删掉,没有就加上

元素.classList.contains('类名')   看看有没有包含某个类,包含返回true, 不包含返回false

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())
        // 但是这种方式只能得到当前的时间戳,而前面两种方式可以得到指定时间的时间戳



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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Web网页生成桌面应用

前言&#xff1a;网页生成桌面指的是将一个网页保存为桌面应用程序的形式&#xff0c;使得用户可以在桌面上直接打开该网页&#xff0c;而不必通过浏览器打开。这种桌面应用程序一般具有独立的窗口、菜单、工具栏等界面元素&#xff0c;能够提供更加方便快捷的使用体验。 实现…

Vue 动态组件与异步组件:深入理解与全面应用

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介1. 动态组件实现原理&#xff1a;用法示例&#xff1a; 2. 异步组件实现原理&#xff1a;用法示例&#xff1a; 3. 异步组件的高级应用a. 异步组件的命名&#xff1a;b. 异步组件的加载状态管理&#xff1a; ⭐ 写在最后 ⭐ 专栏简…

目标检测算法改进系列之添加C2f-DCN模块

DCNv2简介 可变形卷积网络的卓越性能源于其适应物体几何变化的能力。通过对其自适应行为的检查&#xff0c;我们观察到&#xff0c;虽然对其神经特征的空间支持比常规的 ConvNet 更接近对象结构&#xff0c;但这种支持可能远远超出感兴趣区域&#xff0c;导致特征受到不相关图…

使用KMP迁移Android app到IOS平台

使用KMP迁移Android app到IOS平台 如果你有一款Android app&#xff0c;你想将其迁移到IOS平台&#xff0c;但是你不熟悉Swift语言&#xff0c;那么你该如何做呢&#xff1f;辛亏JetBrains 推出 Kotlin Multiplatform 和 Compose Multiplatform &#xff0c;突然间&#xff0c…

代码随想录算法训练营第十六天| 104.二叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数

104.二叉树的最大深度 本题可以使用前序&#xff08;中左右&#xff09;&#xff0c;也可以使用后序遍历&#xff08;左右中&#xff09;&#xff0c;使用前序求的就是深度&#xff0c;使用后序求的是高度。 ●二叉树节点的深度&#xff1a;指从根节点到该节点的最长简单路径边…

Linux-Shell脚本基础

一、前言&#xff1a; 1.程序编程风格&#xff1a; 面向过程语言&#xff1a; 开发的时候 需要 一步一步 执行 做一件事情&#xff0c;排出个步骤&#xff0c;第一步干什么&#xff0c;第二步干什么&#xff0c;如果出现情况A&#xff0c;做什么处理&#xff0c;如果出现了情…

DC-9靶机做题记录

靶机下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1LR44-oFnO6NU6bTNs7VNrw?pwdhzke 提取码&#xff1a;hzke 参考&#xff1a; 【DC系列靶机DC9通关讲解】 https://www.bilibili.com/video/BV1p24y1s78C/?share_sourcecopy_web&vd_source12088c392…

Fluent Bit配置与使用——基于版本V2.2.2

Fluent Bit日志采集终端 文档适用版本&#xff1a;V2.2 1、日志文件处理流程 数据源是一个普通文件&#xff0c;其中包含 JSON 内容&#xff0c;使用tail插件记录日志&#xff0c;通过parsers进行格式化匹配&#xff08;图里没写&#xff09;&#xff0c;通过两个筛选器&…

白酒:发酵过程中的化学反应与香气形成

云仓酒庄的豪迈白酒在发酵过程中经历了多种化学反应&#xff0c;这些反应对于酒的香气和口感的形成起到了至关重要的作用。 首先&#xff0c;我们要了解发酵的定义。发酵是一个生物化学过程&#xff0c;通过特定微生物的作用&#xff0c;将原料中的糖类物质转化为酒精和二氧化碳…

爬虫正则+bs4+xpath+综合实战详解

Day3 - 1.数据解析概述_哔哩哔哩_bilibili 聚焦爬虫&#xff1a;爬取页面中指定的页面内容 编码流程&#xff1a;指定url -> 发起请求 -> 获取响应数据 -> 数据解析 -> 持久化存储 数据解析分类&#xff1a;正则、bs4、xpath(本教程的重点) 数据解析原理概述&am…

JQuery下载和一些语法

最近学了六种jQuery选择器&#xff0c;我想把学过案例和知识结合起来&#xff0c;给大家分享下&#xff01; 那么既然学jQuery选择器&#xff0c;肯定要先了解下jQuery是什么吧&#xff01;jQuery是一个快速、简洁的JavaScript框架&#xff0c;相当于用jQuery能更加高效的创建…

男主角展现炸裂演技,演绎方式独具匠心,令人叹为观止

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 在漫长的等待之后&#xff0c;《要久久爱》这部都市情感剧终…

Redis的主从复制

目录 一、主从复制 1.主从复制是什么 2. 主从复制能干嘛 3 主从复制 3.1创建一主二仆 3.2创建伪主从 3.3编写配置文件 3.4启动三台redis服器 3.5配置注册关系 4.复制原理 5.薪火相传 6.反客为主 7.哨兵模式(sentinel) 一、主从复制 1.主从复制是什么 主机数据更新…

服务器运维小技巧(二)——如何进行监控告警

服务器运维难度高的原因&#xff0c;很大程度是因为服务器一旦出现问题&#xff0c;生产环境的业务就会受到严重影响&#xff0c;极有可能带来难以承担的后果。因此这份工作要求工程师保持高要求的服务质量&#xff0c;能够快速响应问题&#xff0c;及时解决问题。 但是“及时…

EasyExcel实现导出图片到excel

pom依赖&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.0</version> </dependency> 实体类&#xff1a; package com.aicut.monitor.vo;import com.aicut.monit…

springboot优雅停机

import org.springframework.context.annotation.Configuration;import javax.annotation.PreDestroy;Configuration public class DataBackupConfig {PreDestroypublic void backData(){System.out.println("开始备份..."System.currentTimeMillis());System.out.pr…

【机器学习300问】18、正则化是如何解决过拟合问题的?

当我初次看见“正则化”三个字的时候&#xff0c;我简直头疼。在我的理解里“正则”还是Python中用在字符串处理的re正则库呢&#xff01;怎么加一个“化”字就看不懂了&#xff01;听我给你慢慢道来。 一、正则化中的“正则”是个啥玩意儿&#xff1f; 正则化&#xff08;Reg…

Docker安装多个nginx容器时,要注意端口设置:

Docker安装多个nginx容器时&#xff0c;要注意端口设置&#xff1a; docker run -id --namemynginx4 -p 8089:80 nginx 安装多个nginx容器时&#xff0c;要注意端口设置&#xff1a;宿主机80端口已经被暂用&#xff0c;所以宿主机端口一定不能设置位80&#xff0c;但是容器上80…

三篇论文联合复现:高比例新能源下考虑需求侧响应和智能软开关的配电网重构程序代码!

适用平台&#xff1a;MatlabYalmipCplex 程序在高比例新能源接入的情况下提出了考虑需求响应&#xff08;DR&#xff09;和智能软开关&#xff08;SOP&#xff09;的多时段主动配电网重构策略&#xff0c;进一步降低配电系统重构费用&#xff0c;减少弃风率和弃光率&#xff1…