【零基础】学JS之APIS第三天

news2024/12/23 13:17:38

  💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。



非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
 

前言

本栏目是根据黑马程序员的网课来整理的笔记,也会结合我的一些个人见解,来记录自己学习web APIS的过程,俗话说,好记性不如烂笔头,小郑喜欢在学习的过程中记笔记,记下自己在学习过程中难以理解的知识点,反复练习,加深印象,希望广大网友一起监督学习,互相进步!

1. 事件

 什么是事件?

事件是在编程时系统内发生的 动作 或者发生的事情
比如用户在网页上 单击 一个按钮

什么是事件监听?

就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为 注册事件

事件监听三要素:

事件源: 那个dom元素被事件触发了,要获取dom元素
事件: 用什么方式触发,比如鼠标单击 click、鼠标经过 mouseover 等
事件调用的函数: 要做什么事
注意:
1. 事件类型要 加引号
2. 函数是点击之后再去执行,每次 点击都会执行一次

2. 随机点名案例

需求:

点击开始随机抽取,点击结束输出结果
业务分析:
点击开始按钮随机抽取数组的一个数据,放到页面中点击结束按钮删除数组当前抽取的一个数据当抽取到最后一个数据的时候,两个按钮同时禁用核心:利用定时器快速展示,停止定时器结束展示

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        h2 {
            text-align: center;
        }

        .box {
            width: 600px;
            margin: 50px auto;
            display: flex;
            font-size: 25px;
            line-height: 40px;
        }

        .qs {

            width: 450px;
            height: 40px;
            color: red;

        }

        .btns {
            text-align: center;
        }

        .btns button {
            width: 120px;
            height: 35px;
            margin: 0 50px;
        }
    </style>
</head>

<body>
    <h2>随机点名</h2>
    <div class="box">
        <span>名字是:</span>
        <div class="qs">这里显示姓名</div>
    </div>
    <div class="btns">
        <button class="start">开始</button>
        <button class="end">结束</button>
    </div>

    <script>
        // 数据数组
        let arr = ['马超', '黄忠', '赵云', '关羽', '张飞']
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min
        }
        let timer = 0
        let random = 0
        let start = document.querySelector('.start')
        let end = document.querySelector('.end')
        let qs = document.querySelector('.qs')

        start.addEventListener('click', function () {

            timer = setInterval(function () {
                random = getRandom(0, arr.length - 1)
                qs.innerHTML = arr[random]

            }, 35)
            if (arr.length === 1) {
                start.disabled = true
                end.disabled = true
            }
        })

        end.addEventListener('click', function () {
            clearInterval(timer)
            console.log(arr[random])
            arr.splice(random, 1)

        })


    </script>
</body>

</html>

3.小米搜素栏

需求:当表单得到焦点,显示下拉菜单,失去焦点隐藏下来菜单
分析:
①:开始下拉菜单要进行隐藏
表单获得焦点 focus,则显示下拉菜单,并且文本框变色(添加类
表单失去焦点,反向操作

focus 获得光标

blur 失去光标事件

<body>
    <div class="mi">
        <input type="search" placeholder="小米笔记本">
        <ul class="result-list">
            <li><a href="#">全部商品</a></li>
            <li><a href="#">小米11</a></li>
            <li><a href="#">小米10S</a></li>
            <li><a href="#">小米笔记本</a></li>
            <li><a href="#">小米手机</a></li>
            <li><a href="#">黑鲨4</a></li>
            <li><a href="#">空调</a></li>
        </ul>
    </div>
    <script>

        let search = document.querySelector('input')
        let list = document.querySelector('.result-list')

        search.addEventListener('focus', function () {
            list.style.display = 'block'
            search.classList.add('search')
        })

        search.addEventListener('blur', function () {
            list.style.display = 'none'
            search.classList.remove('search')
        })




    </script>

</body>

4. 全选反选案例

需求:用户点击全选,则下面复选框全部选择,取消全选则全部取消,文字对应变化
分析:
全选复选框点击,可以得到当前按钮的 checked把下面所有的小复选框状态checked,改为和全选复选框一致如果当前处于选中状态,则把文字改为取消,否则反之

<script>
    // 1. 获取元素  全选 和   ck 小复选框
    let all = document.querySelector('#checkAll')
    let cks = document.querySelectorAll('.ck')
    let span = document.querySelector('span')
    // 2. 事件监听   全选按钮  
    all.addEventListener('click', function () {
      // console.log(all.checked)  // true  false 
      // 我们需要做的就是把 all.checked 给下面三个小按钮
      // 因为三个按钮在伪数组里面,我们需要遍历的方式,挨着取出来,依次给值
      for (let i = 0; i < cks.length; i++) {
        cks[i].checked = all.checked
      }
      // 当我们的全选按钮处于选中状态,则可以改为取消
      if (all.checked) {
        // console.log('要改')
        span.innerHTML = '取消'
      } else {
        span.innerHTML = '全选'
      }
    })


    // 3. 小按钮的做法 同时给多个元素绑定相同事件
    for (let i = 0; i < cks.length; i++) {
      // 绑定事件
      cks[i].addEventListener('click', function () {
        // console.log(11)
        // 只要点击任何一个小按钮,都要遍历所有的小按钮  
        for (let j = 0; j < cks.length; j++) {
          // 都来看看是不是有人没有选中
          if (cks[j].checked === false) {
            // 如果有false 则退出循环 结束函数
            all.checked = false
            span.innerHTML = '全选'
            return
          }
        }
        // 当我们的循环结束,如果代码走到这里,说明没有false,都被选中了,则全选按钮要选中
        all.checked = true
        span.innerHTML = '取消'
      })
    }

  </script>

5. 购物车加减案例

需求:用户点击加号,则文本框+1,点击减号则文本框-1,如果文本框为1,则禁用减号
分析:
自增给添加按钮注册点击事件,获取表单的value,然后T:
解除减号的disabled状态
减3:给减号按钮添加点击事件,获取表单的value,然后
自减结束需要判断,如果结果小于等于1则添加上disabled状态

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    div {
      width: 80px;
    }

    input[type=text] {
      width: 50px;
      height: 44px;
      outline: none;
      border: 1px solid #ccc;
      text-align: center;
      border-right: 0;
    }

    input[type=button] {
      height: 24px;
      width: 22px;
      cursor: pointer;
    }

    input {
      float: left;
      border: 1px solid #ccc;

    }
  </style>
</head>

<body>
  <div>
    <input type="text" id="total" value="1" readonly>
    <input type="button" value="+" id="add">
    <input type="button" value="-" id="reduce" disabled>
    <script>

      //1.获取元素
      let total = document.querySelector('#total')
      let add = document.querySelector('#add')
      let reduce = document.querySelector('#reduce')

      //2.事件监听
      add.addEventListener('click', function () {
        total.value++
        reduce.disabled = false
      })

      reduce.addEventListener('click', function () {
        total.value--
        if (total.value <= 1) {
          reduce.disabled = true
        }

      })

    </script>
  </div>
</body>

</html>

6. 排他思想

只需要找出唯一的那个pink类,把它删掉,然后加上点击的那个按钮

<body>
    <button class="pink">第1个</button><button>第2个</button><button>第3个</button><button>第4个</button><button>第5个</button>
    <script>
        let btns = document.querySelectorAll('button')
        for (let i = 0; i < btns.length; i++) {
            btns[i].addEventListener('click', function () {
                // this.classList.add('pink')
                // // 干掉所有人
                // for (let j = 0; j < btns.length; j++) {
                //     btns[j].classList.remove('pink')
                // }
                // 我只需要找出那个唯一的 pink类,删除
                document.querySelector('.pink').classList.remove('pink')
                // 我的
                this.classList.add('pink')
            })
        }
    </script>
</body>

综合案例-tab

核心思想:

其实这个案例也是运用排他思想,先将原本有的tab亮光隐藏起来,然后加上点击的那个栏的亮光。

1得到所有的li

2.头部tab栏切换模板

3.底部显示隐藏模块  一定要写到点击事件的里面

  <script>

    //1. 获取元素
    //得到所有的li
    let lis = document.querySelectorAll('.tab .tab-item')
    let divs = document.querySelectorAll('.products .main')
    //2.头部tab栏切换模板
    //2.1 先给4个小li添加点击事件
    for (let i = 0; i < lis.length; i++) {
      lis[i].addEventListener('click', function () {
        console.log(11)
        //找到以前的active类,移除掉
        document.querySelector('.tab .active').classList.remove('active')
        this.classList.add('active')

        //2.添加底部模板
        document.querySelector('.products .active').classList.remove('active')

        //div对应序号加上
        divs[i].classList.add('active')
      })
    }
  </script>

 ❤️❤️❤️小郑是普通学生水平,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

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

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

相关文章

10分钟快速了解神经网络(Neural Networks)

神经网络是深度学习算法的基本构建模块。神经网络是一种机器学习算法&#xff0c;旨在模拟人脑的行为。它由相互连接的节点组成&#xff0c;也称为人工神经元&#xff0c;这些节点组织成层次结构。 Source: victorzhou.com 神经网络与机器学习有何不同&#xff1f; 神经网络是…

电脑资料丢失不用慌,5招教你恢复数据

在数字化时代&#xff0c;电脑资料的安全与完整对我们而言至关重要。然而&#xff0c;生活中总有一些小插曲&#xff0c;如意外删除、系统故障或病毒攻击等&#xff0c;导致电脑上的重要资料消失得无影无踪。面对这种情况&#xff0c;我们往往感到焦虑和无助。今天&#xff0c;…

LabVIEW心电信号自动测试系统

开发了一种基于LabVIEW的心电信号自动测试系统&#xff0c;通过LabVIEW开发的上位机软件&#xff0c;实现对心电信号的实时采集、分析和自动化测试。系统包括心电信号采集模块、信号处理模块和自动化测试模块&#xff0c;能够高效、准确地完成心电信号的测量与分析。 硬件系统…

在 SwiftUI 中的作用域动画

文章目录 前言简单示例动画视图修饰符使用多个可动画属性使用 ViewBuilder总结 前言 从一开始&#xff0c;动画就是 SwiftUI 最强大的功能之一。你可以在 SwiftUI 中快速构建流畅的动画。唯一的缺点是每当我们需要运行多步动画或将动画范围限定到视图层次结构的特定部分时&…

网络规划设计师教程(第二版) pdf

网络规划设计师教程在网上找了很多都是第一版&#xff0c;没有第二版。 所以去淘宝买了第二版的pdf&#xff0c;与其自己独享不如共享出来&#xff0c;让大家也能看到。 而且这个pdf我已经用WPS扫描件识别过了&#xff0c;可以直接CtrlF搜索关键词&#xff0c;方便查阅。 链接…

股指期货存在的风险有哪些?

股指期货因其标的物的特殊性&#xff0c;其面临的风险类型十分复杂&#xff0c;主要面临的一般风险和特有风险如下&#xff1a; 一般风险 从风险是否可控的角度&#xff0c;可以划分为不可控风险和可控风险&#xff1b;从交易环节可分为代理风险、流动性风险、强制平仓风险&…

linux 安装redis 遇到问题解决方案

1.当下载了redis包时&#xff08;version&#xff1a;6.0.6&#xff09; 进入解压后的redis目录&#xff08;这里采用tar包安装&#xff09; 当执行make命令时 如果遇到如下情况&#xff1a; 查看当前服务起的gcc 版本&#xff1a;因为redis需要c编译器编译 gcc -v centos 7 …

使用亮数据代理IP+Python爬虫批量爬取招聘信息训练面试类AI智能体

本文目录 一、引言二、开发准备三、代码开发四、使用亮数据进行高效爬取4.1 为什么需要亮数据4.2 如何使用亮数据 五、使用数据训练AI智能体六、 总结 一、引言 在当今AI迅速发展的时代&#xff0c;招聘市场正经历着前所未有的变革。传统的招聘方式已难以满足双方的需求。AI智…

Transformer模型:Postion Embedding实现

前言 这是对上一篇WordEmbedding的续篇PositionEmbedding。 视频链接&#xff1a;19、Transformer模型Encoder原理精讲及其PyTorch逐行实现_哔哩哔哩_bilibili 上一篇链接&#xff1a;Transformer模型&#xff1a;WordEmbedding实现-CSDN博客 正文 先回顾一下原论文中对Posit…

如何巧妙运用百川工作手机微信行为监控 防范员工离职带走客户

在竞争日益激烈的商业环境中&#xff0c;企业最宝贵的资产莫过于忠诚的客户群体与高效协作的团队。然而&#xff0c;当团队中不可避免地出现人员流动时&#xff0c;如何有效防止客户资源流失&#xff0c;成为众多企业管理者面临的严峻挑战。百川工作手机&#xff0c;作为一款专…

基于Redisson 实现 Redis 分布式锁

代码示例&#xff1a; GetMapping("/testJmeter")public void testJmeter() {synchronized (this){int stock Integer.parseInt(stringRedisTemplate.opsForValue().get("stock"))if (stock > 0) {int realStock stock - 1;stringRedisTemplate.opsFo…

【组件库】element-plus组件库

文章目录 0. 启动项目1. gc.sh 新增组件2. 本地验证(组件注册的方式)3. 官方文档修改3-1. 左侧菜单3-2 . 配置md文档3-3. 代码问题:文档修改----------------------------------------------4. 将naiveui的split 分割组件【 复制、迁移】到 element-ui-plus组件库4.1 naiveu…

Science Advances 仿生双模态触觉感知

研究背景 触觉感知在人类收集信息和接收周围环境反馈中扮演着至关重要的角色。随着人工智能的发展&#xff0c;具有类似人类感知能力的智能机器人受到越来越多的关注。现有的触觉传感器能够感知接触前的刺激和压力大小&#xff0c;但它们在区分物体类型、评估柔软度和量化杨氏…

go-高效处理应用程序数据

一、背景 大型的应用程序为了后期的排障、运营等&#xff0c;会将一些请求、日志、性能指标等数据保存到存储系统中。为了满足这些需求&#xff0c;我们需要进行数据采集&#xff0c;将数据高效的传输到存储系统 二、问题 采集服务仅仅针对某个需求开发&#xff0c;需要修改…

Docker容器的生命周期

引言 Docker 容器作为一种轻量级虚拟化技术&#xff0c;在现代应用开发和部署中扮演着重要角色。理解容器的生命周期对于有效地管理和运维容器化应用至关重要。本文将深入探讨 Docker 容器的生命周期&#xff0c;从创建到销毁的各个阶段&#xff0c;帮助读者更好地掌握容器管理…

分手后如何走出夜晚的抑郁,告别失眠困扰?

在这个快速变化的世界里&#xff0c;分手成为了许多人生活中不得不面对的现实。而每当夜幕降临&#xff0c;那种难以言表的孤独感和深深的抑郁往往让人倍感煎熬&#xff0c;甚至陷入失眠的漩涡。那么&#xff0c;分手后我们该如何应对这种情绪困扰&#xff0c;重新找回自己的宁…

防火墙NAT和智能选路实验详解(华为)

目录 实验概述实验拓扑实验要求要求一要求二要求三要求四要求五 实验概述 从我上面一个博客能够了解到NAT和防火墙选路原理 ——>防火墙nat和智能选路&#xff0c;这一章我通过实验来详解防火墙关于nat和智能选路从而能熟练使用和配置防火墙&#xff0c;这里使用的是华为US…

lvs集群、NAT模式和DR模式、keepalive

目录 lvs集群概念 集群的类型&#xff1a;三种类型 系统可靠性指标 lvs集群中的术语 lvs的工作方式 NAT模式 lvs的工具 算法 实验 数据流向 步骤 一 、调度器配置&#xff08;test1 192.168.233.10&#xff09; 二、RS配置&#xff08;nginx1和nginx2&#xff09;…

Android:如何绘制View

点击查看Android 如何绘制视图官网 一、简介 Android 框架会在 Activity 获得焦点时请求 Activity 绘制其布局。Android 框架会处理绘制流程&#xff0c;但该 Activity 必须提供其布局层次结构的根节点。 Android 框架会绘制布局的根节点&#xff0c;并测量和绘制布局树。它会…

【每日一练】python类和对象现实举例详细讲解

""" 本节课程目的&#xff1a; 1.掌握类描述现实世界实物思想 2.掌握类和对象的关系 3.理解什么事面向对象 """ #比如设计一个闹钟&#xff0c;在这里就新建一个类 class Clock:idNone #闹钟的序列号&#xff0c;也就是类的属性priceNone #闹…