本节作业之5秒后自动关闭广告、倒计时、发送短信、5秒之后自动跳转页面、获取URL参数数据

news2025/1/20 9:06:51

本节作业之5秒后自动关闭广告、倒计时、发送短信、5秒之后自动跳转页面、获取URL参数数据

  • 1 5秒后自动关闭广告
  • 2 倒计时
  • 3 发送短信
  • 4 5秒之后自动跳转页面
  • 5 获取URL参数数据

1 5秒后自动关闭广告

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>5秒后自动关闭广告</title>
</head>
<body>
    <img src="images/ad.jpg" alt="" class="ad">
    <script>
        /* 案例分析:
            1.核心思路:5秒后,就把这个广告隐藏起来
            2.用定时器setTimeout */

        var ad = document.querySelector('.ad');
        setTimeout(function() {
            ad.style.display = 'none';
        }, 5000);
    </script>
</body>
</html>

在这里插入图片描述

2 倒计时

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>倒计时</title>
    <style>
        div {
            margin: 200px;
        }
        
        span {
            display: inline-block;
            width: 40px;
            height: 40px;
            background-color: #333;
            font-size: 20px;
            color: #fff;
            text-align: center;
            line-height: 40px;
        }
    </style>
</head>
<body>
    <div>
        <span class="hour"></span>
        <span class="minute"></span>
        <span class="second"></span>
    </div>
    <script>
        /* 案例分析:
            1.这个计时器是不断变化的,因此需要定时器来自动变化(setInterval)
            2.三个黑色的盒子里面分别存放时分秒
            3.三个黑色盒子利用innerHTML放入计算的小时分钟秒数
            4.第一次执行也是间隔毫秒数,因此刚刷新页面会有空白
            5.最好采用封装函数的方式,这样可以先调用一次这个函数,防止刚开始刷新页面有空白问题 */
        
        // 1.获取元素
        var hour = document.querySelector('.hour'); // 小时的黑色盒子
        var minute = document.querySelector('.minute'); // 分钟的黑色盒子
        var second = document.querySelector('.second'); // 秒数的黑色盒子
        var inputTime = +new Date('2023-4-13 00:00:00'); // 返回的是用户输入时间总的毫秒数
        countDown(); // 先调用一次此函数,防止第一次刷新页面会有空白
        // 2.开启定时器
        setInterval(countDown, 1000); // 每隔一秒 调用一次countDown
        function countDown() {
            var nowTime = +new Date(); // 返回的是当前时间总的毫秒数
            var times = (inputTime - nowTime) / 1000; // 返回的是剩余时间总的秒数 除以1000 是将毫秒变为秒
            var h = parseInt(times / 60 / 60 % 24); // 小时
            h = h < 10 ? '0' + h : h;
            hour.innerHTML = h;
            var m = parseInt(times / 60 % 60); // 分钟
            m = m < 10 ? '0' + m : m;
            minute.innerHTML = m;
            var s = parseInt(times % 60); // 秒
            s = s < 10 ? '0' + s : s;
            second.innerHTML = s;
        }
    </script>
</body>
</html>

在这里插入图片描述

3 发送短信

点击按钮后,该按钮60秒之内不能再次点击,防止重复发送短信。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>发送短信</title>
</head>
<body>
    手机号码:<input type="number"> <button>发送</button>
    <script>
        /* 案例分析:
            1.按钮点击后,会禁用disabled为true
            2.同时按钮里面的内容会变化,注意button里面的内容通过innerHTML修改
            3.里面的秒数是有变化的,因此需要用到定时器
            4.定义一个变量,在定时器里面,不断递减
            5.如果变量为0,说明到了时间,我们需要停止计时器,并且复原按钮初始状态 */

        var btn = document.querySelector('button');
        var time = 60; // 定义剩下的秒数
        btn.addEventListener('click',function() {
            btn.disabled = 'true'; // 此时的btn可改为this 因为this指向btn
            var timer = setInterval(function() {
                if(time == 0) {
                    // 清除定时器和复原按钮
                    clearInterval(timer);
                    btn.disabled = false; // 此时的btn不可以改为this 因为this在定时器里 this指向window
                    btn.innerHTML = '发送';
                    time = 60; // time需要重新开始
                } else {
                    btn.innerHTML = '还剩下'+ time +'秒';
                    time--;
                }
            }, 1000);
        })
    </script>
</body>
</html>

点击前:
在这里插入图片描述
点击后:
在这里插入图片描述

4 5秒之后自动跳转页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>5秒钟之后跳转页面</title>
</head>
<body>
    <button>点击</button>
    <div></div>
    <script>
        /* 案例分析:
            1.利用定时器做倒计时效果
            2.时间到了,就跳转页面,使用location.href */
        var btn = document.querySelector('button');
        var div = document.querySelector('div');
        /* btn.addEventListener('click', function() {
            // console.log(location.href); // console.log(window.location.href);
            location.href = 'http://www.baidu.com';
        }) */
        var timer = 5;
        countDown(); // 先调用一次此函数,防止第一次刷新页面会有空白
        setInterval(countDown, 1000);
        function countDown() {
            if(timer == 0) {
                location.href = 'http://www.baidu.com';
            } else {
                div.innerHTML = '您将在' + timer +'秒之后跳转到首页';
                timer--
            }
        }
    </script>
</body>
</html>

在这里插入图片描述

5 获取URL参数数据

主要练习数据在不同页面中的传递
login.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>login</title>
</head>
<body>
    <form action="index.html">
        用户名:<input type="text" name="uname">
        <input type="submit" value="登录">
    </form>
    <script>
        /* 案例分析:
            1.第一个登录页面,里面有提交表单,action提交到index.html
            2.第二个页面,可以使用第一个页面的参数,这样就实现了一个数据不同页面之间的传递效果
            3.第二个页面之所以可以使用第一个页面的数据,是利用了URL里面的location.search参数
            4.在第二个页面中,需要把这个参数提取
            5.第一步去掉? 利用substring()
            6.第二步利用=号分割键和值 split('=') */
    </script>
</body>
</html>

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>index</title>
</head>
<body>
    <div></div>
    <script>
        console.log(location.search); // ?uname=andy
        // 1. 先去掉?  substring('起始位置', '结束位置')
        var params = location.search.substring(1); // params参数
        console.log(params);
        // 2.利用 = 把字符串分割为数组split('=')
        var arr = params.split('=');
        console.log(arr); // ['uname', 'andy']
        var div = document.querySelector('div');
        // 3.把数据写入div中
        div.innerHTML = arr[1] + '欢迎您!';
    </script>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

管理系统的前端模板(vue2+Element UI)

目录 前言 一、模板展示图 二、获取的方式及操作运行步骤 &#xff08;一&#xff09;获取方式 &#xff08;二&#xff09;操作步骤 1.下载安装node.js 2.下载完成解压缩后在idea的里面打开终端。 3.输入下载相关依赖的命令 4.运行项目的命令 5.然后把给到的地址…

腾讯云渲染实战

UE使用流渲染技术的主要原因是为了提高渲染效率和降低成本。流渲染技术可以将渲染任务分配到多个计算节点上进行并行处理&#xff0c;从而加快渲染速度。同时&#xff0c;流渲染技术还可以将渲染任务分配到云端进行处理&#xff0c;减少本地计算机的负担&#xff0c;降低成本。…

又一科研利器诞生!能对话的论文阅读器,hammerScholar

文&#xff5c;智商掉了一地 hammerScholar 新升级&#xff0c;用对话式读论文工具提升科研生产力~ 不得不说&#xff0c;自从 AIGC 这个概念出现以来&#xff0c;它极强的内容理解与生成能力也推动着各种生产力工具层出不穷&#xff0c;除了一些浏览器和代码插件以外&#xff…

SpringBoot的Interceptor拦截器的简介和实际使用

拦截器&#xff08;Interceptor&#xff09; 概念&#xff1a;是一种动态拦截方法调用的机制&#xff0c;类似于过滤器。Spring框架中提供的&#xff0c;用来动态拦截控制器方法的执行。 作用&#xff1a;拦截请求&#xff0c;在指定的方法调用前后&#xff0c;根据业务需要执行…

干货 | 关于等效电路图

等效电路图是电路原理中非常重要的一个概念&#xff0c;在电子工程、通信工程和电力工程等领域中经常被使用。等效电路图是指将一个复杂的电路简化成一个简单的电路&#xff0c;同时保持电路的等效性质&#xff0c;以便于分析和设计电路。在本文中&#xff0c;我们将详细介绍等…

回溯法 思想

回溯法&#xff08;back tracking&#xff09;&#xff08;探索与回溯法&#xff09;是一种选优搜索法&#xff0c;又称为试探法&#xff0c;按选优条件向前搜索&#xff0c;以达到目标。但当探索到某一步时&#xff0c;发现原先选择并不优或达不到目标&#xff0c;就退回到上一…

ChatGPT安全性受质疑 国家网信办发布《生成式人工智能服务管理办法(征求意见稿)》

你是否曾经和一款人工智能对话&#xff1f;它们似乎能够理解你的问题&#xff0c;并给出令人满意的答案。ChatGPT是目前最流行的人工智能。它是由OpenAI开发的一款基于GPT技术的自然语言处理模型。 通过训练大量的文本数据&#xff0c;ChatGPT可以理解并回答用户的问题&#xf…

Excel vba直接调用斑马打印机进行打印代码

1.难点 1.1 vba 对zebra打印机调用方法open 1.2 zebra打印机默认支持UTF8 编码方式&#xff0c;对应编码命令为CI28; 支持GB2312 GB18030 ASCII码编码方式&#xff0c;对应编码命令为CI26 1.3 VBA对中文只支持GB2312, 而excel 是默认支持UTF8的&#xff0c; excel 与VBA编…

钛碳化铝(Ti3AlC2)在实验检测领域中的应用

钛碳化铝Ti3AlC2是一种属于MAX相&#xff08;M代表金属元素&#xff0c;A代表主族元素&#xff0c;X代表碳或氮&#xff09;的陶瓷材料。它是由钛、铝和碳组成的复合材料&#xff0c;拥有优异的力学、热学和电学性能。由于这些性质&#xff0c;Ti3AlC2已成为近年来研究和应用的…

[Netty源码] ByteBuf相关问题 (十)

文章目录 1.ByteBuf介绍2.ByteBuf分类2.1 AbstractByteBuf2.2 AbstractReferenceCountedByteBuf2.3 UnpooledHeapByteBuf2.4 UnpooledDirectByteBuf2.5 PooledDirectByteBuf 1.ByteBuf介绍 字节缓冲区, jdk NIO的ByteBuffer比较复杂, netty重新设计了ByteBuf用以代替ByteBuffe…

直方图实例详解(颜色直方图、灰度直方图)

直方图实例详解&#xff08;颜色直方图、灰度直方图&#xff09; 本篇目录&#xff1a; &#x1f984; 一、前言 &#x1f984; 二、直方图的概念 &#x1f984; 三、颜色直方图 &#xff08;1&#xff09;、颜色直方图定义 &#xff08;2&#xff09;、颜色直方图使用方法…

线程池中的拒绝策略

线程池中的拒绝策略 什么情况下出发拒绝策略? 当提交任务数大于corePoolSize的时候,会将多余任务缓存在workQueue阻塞队列中当阻塞队列满了,会扩充线程数当扩充线程数大于maximumPoolSize的时候,就会触发拒绝策略 也就是说,当任务数大于workQueue.size() 和maximumPoolSize…

同态随机基加密的量子多方密码-数学公式

众所周知&#xff0c;信息和信息处理的完全量子理论提供了诸多好处&#xff0c;其中包括一种基于基础物理的安全密码学&#xff0c;以及一种实现量子计算机的合理希望&#xff0c;这种计算机可以加速某些数学问题的解决。这些好处来自于独特的量子特性&#xff0c;如叠加、纠缠…

《PyTorch 深度学习实践》第9讲 多分类问题(Kaggle作业:otto分类)

文章目录 1 一些细碎代码1.1 Cross Entropy1.2 Mini-batch: batch_size3 2 示例3 作业任务描述查看数据进行建模提交Kaggle总结 该专栏内容为对该视频的学习记录&#xff1a;【《PyTorch深度学习实践》完结合集】 专栏的全部代码、数据集和课件全放在个人GitHub了&#xff0c;…

分享:作业帮在多云环境下的高可用双活架构优化实践

欢迎访问 OceanBase 官网获取更多信息&#xff1a;https://www.oceanbase.com/ 本文来自OceanBase社区分享&#xff0c;仅限交流探讨。作者介绍&#xff1a;刘强&#xff0c;就职于作业帮基础架构 DBA 团队&#xff0c;负责分布式数据库的探索和使用&#xff0c;协同研发团队在…

node 链接MySql数据库并 进行增删改查

在Navicat中创建数据库创建表 那么就开始吧&#xff01; 一、链接数据库 mysql - npmA node.js driver for mysql. It is written in JavaScript, does not require compiling, and is 100% MIT licensed.. Latest version: 2.18.1, last published: 3 years ago. Start usin…

15.使用组件

目录 1 独立组件 2 私有子组件 3 全局组件 1 独立组件 我当前App.vue的内容是这样的 LEFT.vue的内容是这样的 RIGHT.vue的内容是这样的 那么这个时候我们认为 left.vue&#xff0c;right.vue与App.vue 是彼此独立的三个组件 2 私有子组件 我现在想把LEFT.vue与RIGHT.…

操作系统原理 —— 操作系统运行机制与体系结构(三)

什么是操作系统的指令&#xff1f; 指令就是处理器(CPU)能识别、执行的最基本命令。 比如我们平时写的 Java 代码、C 语言代码&#xff0c;CPU 它能直接识别并且运行吗&#xff1f; 当然是不行的。 Java、C 语言这些都属于高级语言&#xff0c;它们还需要经过一系列的编译最…

再也不怕面试官问:详解Synchronized和Lock的实现原理及使用场景

1、Synchronized与Lock对比 实现方式&#xff1a;Synchronized是Java语言内置的关键字&#xff0c;而Lock是一个Java接口。锁的获取和释放&#xff1a;Synchronized是隐式获取和释放锁&#xff0c;由Java虚拟机自动完成&#xff1b;而Lock需要显式地调用lock()方法获取锁&#…

Moonbeam 操作指南|使用Docker和Systemd在Moonbeam上运行节点

运行全节点允许您存储链的本地副本、验证新的区块、获取对RPC端点的本地访问权限以及配置为创作区块的收集人等。 &#x1f4c4; 查看开发者文档 重点操作如下&#xff1a; 虽然运行&#xff08;和升级&#xff09;您自己的节点需要付出时间和精力&#xff0c;但同时您也会获…