锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. JS(JavaScript)BOM操作 趣味案例 计时器

JS(JavaScript)BOM操作 趣味案例 计时器

0
  • 软件开发
  • 发布于 2024-08-19
  • 0 次阅读
黄健
黄健

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。


大鹏一日同风起,扶摇直上九万里。
------《上李邕》



文章目录

  • JS(JavaScript)BOM操作 趣味案例 计时器
    • 1. 实现目标
    • 2. 预览效果
    • 3. 示例代码
    • 4. 页面效果
    • 5. 示例代码下载



JS(JavaScript)BOM操作 趣味案例 计时器

1. 实现目标

这里制作一个计时器,计时器共三位,百位十位个位,以秒为单位计时,个位到9进一到十位,十位到九进一到百位,百位到九则三位归零重新开始
共三个按钮,开始、停止、重置
开始前三个按钮只能点开始按钮
开始按钮点了之后,开始按钮不可再点,可以点停止和重置按钮
停止按钮点了之后,停止按钮不可再点,开始和重置按钮可点
重置按钮点了之后,重置和停止按钮不可再点,可以点开始按钮
在开始之前需要有十张图片,用于显示每个位的数值
这里自己截图准备了从0-9的十张图片,可在后面的下载连接中和代码一起获取

2. 预览效果

最终实现的效果如下图,三个图对应百位十位个位的秒数计时,三个按钮对应三个功能

3. 示例代码

示例代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>bom操作-趣味案例-计时器</title>

    <script>
        // 在函数外部定义全局变量 分别为百位,十位,个位的秒数
        var l = 0, c = 0, r = 0;
        // 定义计时器变量
        var timer;
        // 开始的函数
        function start(){
     
            // 默认点开始时,开始按钮不可再点,停止按钮可以点,重置按钮可以点
            $("start").disabled = true;
            $("stop").disabled = false;
            $("reset").disabled = false;
            // 设置计时器函数
            timer = setInterval(function(){
     
                // 计时器开始,秒数r累加
                r++
                // 如果秒数大于9,则个位的秒数数归零,十位的秒数c累计+1
                if(r>9){
     
                    r=0;
                    c++;
                }
                // 如果十位秒数数大于9,则十位秒数数归零,百位秒数l累计+1
                if(c>9){
     
                    c=0;
                    l++;
                }
                // 如果百位秒数大于9,则百位十位个位全归零
                if(l>9){
     
                    r=0;
                    c=0;
                    l=0;
                }
                //根据百位十位个位的数值,将对应的数字作为变量,展示数值对应的图片
                $("imgr").src="./case_png/"+r+".png";
                $("imgc").src="./case_png/"+c+".png";
                $("imgl").src="./case_png/"+l+".png";
                // 为了方便演示,这里秒数数值从1秒1000毫秒,改为了100毫秒
            },100);

        }
        // 停止按钮的函数,默认点了停止按钮后,开始按钮可以点,停止按钮不可再点,重置按钮可以点
        function stop(){
     
            $("start").disabled = false;
            $("stop").disabled = true;
            $("reset").disabled = false;
            // 清除周期性计时器,这里只是暂停,因为百位十位个位的数值没有清除,开始后会继续之前的数值累加
            clearInterval(timer);
        }
        // 重置函数,默认点击重置按钮后,重置不可点,停止不可点,开始按钮可以点
        function reset(){
     
            $("start").disabled = false;
            $("stop").disabled = true;
            $("reset").disabled = true;
            // 重置后,百位十位个位三个图片归零,全用0的图片展示
            $("imgr").src="./case_png/0.png";
            $("imgc").src="./case_png/0.png";
            $("imgl").src="./case_png/0.png";
            // 重置后三位数值也归零
            r=0;
            c=0;
            l=0;
            // 清除计时器
            clearInterval(timer);
        }

        //通用函数:根据id操作对应的元素
        function $(id){
     
            return document.getElementById(id);
        }
    </script>

</head>
<body>
    
    <tr>
        <td><img src="./case_png/0.png" alt="left" id="imgl"></td>
        <td><img src="./case_png/0.png" alt="center" id="imgc"></td>
        <td><img src="./case_png/0.png" alt="right" id="imgr"></td>
    </tr>
    <br>
    <tr>
        <td><input type="button" value="start" id="start" onclick="start()"></td>
        <td><input type="button" value="stop" id="stop" onclick="stop()" disabled></td>
        <td><input type="button" value="reset" id="reset" onclick="reset()" disabled></td>
    </tr>

</body>
</html>

4. 页面效果

页面效果如下
开始前

点击开始后

点击停止后

点击重置后

5. 示例代码下载

关于案例的示例代码下载地址:JavaScript BOM操作 计时器趣味案例 示例代码


感谢阅读,祝君暴富!


原文链接: https://hanshan.blog.csdn.net//article/details/140104006

标签: #JavaScript 80 #软件开发 1171
相关文章

万字:支付“核心系统”详解 2024-11-02 15:33

专栏作者:隐墨星辰 \| 主编:陈天宇宙 这篇文章也尝试化繁为简,探寻支付系统的本质,讲清楚在线支付系统最核心的一些概念和设计理念。 虽然支付行业已经过了风头最劲的时光,但跨境支付仍然在蓬勃发展,每年依然有很多新人进入这个行业,这篇文章尝试为这些刚入行的新人提供一点帮助。 文章只介绍一些支付行业十几

资深支付架构师视角:实战从问题定义到代码落地的完整套路 2024-11-02 15:33

前言 今天从一个实际案例入手,介绍站在架构师的角度,如何识别并定义问题,提炼需求,技术方案选型,再到详细设计,最后利用AI的能力协助写出核心的代码,验证与调优。 解决问题存在一定的模式,也可以称之为框架,总结出自己的思考和解题框架,以后再碰到同类型的问题就可以如庖丁解牛一样容易。 很多年前,我写代码

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

设计模式第16讲——迭代器模式(Iterator) 2024-10-08 11:24

一、什么是迭代器模式 迭代器模式是一种行为型设计模式,它提供了一种统一的方式来访问集合对象中的元素,而不是暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式访问集合中的元素。 二、角色组成 抽象迭代器(Iterator):定义了遍历聚合对象所需的方法

vue2路由和vue3路由区别及原理 2024-10-08 11:24

一、Vue2 与 Vue3 路由的区别 1. 创建路由实例方式的不同 Vue 2 中,通过 Vue.use() 注册路由插件,并通过 new VueRouter() 来创建路由实例。 import Vue from 'vue';import VueRouter from 'vue-router';i

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.