微信小程序(小小定时器)

这篇具有很好参考价值的文章主要介绍了微信小程序(小小定时器)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.在wxml文件中添加:

<view class="countdown-input">
    <text>风扇定时器:</text>
    <input placeholder="请输入倒计时时间(分钟)" bindinput="inputCountdown"/>
</view>
<view class="countdown">
    <text>时间显示器:</text>
    <text>{{countdownFormat}}</text>
</view>

<view class="countdown-buttons">
  <button wx:if="{{status=='idle'}}" style="background-color: #45b8db;  color: rgb(116, 228, 185);" bindtap="startCountdown">开始计时</button>
    <button wx:if="{{status=='counting'}}"style="background-color: #45b8db;  color: rgb(116, 228, 185);"  bindtap="pauseCountdown">暂停</button>
    <button wx:if="{{status=='paused'}}"style="background-color: #45b8db;  color: rgb(116, 228, 185);"  bindtap="resumeCountdown">继续</button>
    <button wx:if="{{status=='counting'||status=='paused'}}"style="background-color: #45b8db;  color: rgb(116, 228, 185);"  bindtap="stopCountdown">放弃</button>
</view>
  1. <view class="countdown-input">: 表示倒计时输入区域的视图容器,其中包含一个文本标签和一个输入框。
  2. <input placeholder="请输入倒计时时间(分钟)" bindinput="inputCountdown"/>:表示输入框,用于让用户输入倒计时时间,同时使用 bindinput 属性绑定了一个名为 inputCountdown 的函数,用来处理输入事件。
  3. <view class="countdown">:表示倒计时显示区域的视图容器,其中包含一个文本标签,用于展示倒计时的剩余时间。
  4. <text>{{countdownFormat}}</text>:表示用于展示倒计时剩余时间的文本标签,在页面渲染时会动态地根据 countdownFormat 变量的值进行更新。
  5. <view class="countdown-buttons">:表示倒计时操作按钮区域的视图容器,其中包含多个操作按钮。
  6. <button wx:if="{{status=='idle'}}" style="background-color: #45b8db; color: rgb(116, 228, 185);" bindtap="startCountdown">开始计时</button>:表示“开始计时”按钮,当倒计时器处于空闲状态(即未开始)时显示,使用 wx:if 属性根据当前倒计时器状态判断是否显示此按钮,同时使用 bindtap 属性绑定了一个名为 startCountdown 的函数,用来处理按钮点击事件。
  7. <button wx:if="{{status=='counting'}}" style="background-color: #45b8db; color: rgb(116, 228, 185);" bindtap="pauseCountdown">暂停</button>:表示“暂停”按钮,当倒计时器正在运行时显示,使用 wx:if 属性根据当前倒计时器状态判断是否显示此按钮,同时使用 bindtap 属性绑定了一个名为 pauseCountdown 的函数,用来处理按钮点击事件。
  8. <button wx:if="{{status=='paused'}}" style="background-color: #45b8db; color: rgb(116, 228, 185);" bindtap="resumeCountdown">继续</button>:表示“继续”按钮,当倒计时器已经被暂停时显示,使用 wx:if 属性根据当前倒计时器状态判断是否显示此按钮,同时使用 bindtap 属性绑定了一个名为 resumeCountdown 的函数,用来处理按钮点击事件。
  9. <button wx:if="{{status=='counting'||status=='paused'}}" style="background-color: #45b8db; color: rgb(116, 228, 185);" bindtap="stopCountdown">放弃</button>:表示“放弃”按钮,当倒计时器正在运行或已被暂停时显示,使用 wx:if 属性根据当前倒计时器状态判断是否显示此按钮,同时使用 bindtap 属性绑定了一个名为 stopCountdown 的函数,用来处理按钮点击事件。

总体来说,这段代码实现了一个基本的倒计时组件,并提供了开始、暂停、继续和放弃等操作按钮,使用户可以灵活地控制倒计时的进程。

二.在.js文件添加:





Page({
  data: {
    
    
    status: 'idle', // 当前计时器状态:空闲(idle)、计时中(counting)、已暂停(paused)
    countdown: 0, // 剩余计时秒数
    countdownFormat: '', // 格式化后的剩余计时时间,例如 00:02:30
    countdownTimer: null, // 计时器对象
    

、
  },

// 输入区输入内容时触发
inputCountdown: function(e) {
  let timeout = parseInt(e.detail.value); // 获取输入值
  if (isNaN(timeout) || timeout <= 0) return; // 判断输入是否合法
  if (timeout > 360) timeout = 360; // 最大值为6小时,转换为分钟
  this.setData({
    countdown: timeout * 60,
    countdownFormat: this.formatCountdown(timeout * 60),
  });
},
// 开始计时按钮点击事件
startCountdown: function() {
  let self = this;
  self.setData({ status: 'counting' });
  self.data.countdownTimer = setInterval(() => {
    self.setData({
      countdown: self.data.countdown - 1,
      countdownFormat: self.formatCountdown(self.data.countdown - 1),
    });
    if (self.data.countdown <= 0) {
      clearInterval(self.data.countdownTimer);
      self.setData({
        countdown: 0,
        countdownFormat: '00:00:00',
        status: 'idle',
      });
      
      
    }
  }, 1000);
},
// 暂停按钮点击事件
pauseCountdown: function() {
  this.setData({ status: 'paused' });
  clearInterval(this.data.countdownTimer);
},
// 继续按钮点击事件
resumeCountdown: function() {
  let self = this;
  self.setData({ status: 'counting' });
  self.data.countdownTimer = setInterval(() => {
    self.setData({
      countdown: self.data.countdown - 1,
      countdownFormat: self.formatCountdown(self.data.countdown - 1),
    });
    if (self.data.countdown <= 0) {
      clearInterval(self.data.countdownTimer);
      self.setData({
        countdown: 0,
        countdownFormat: '00:00:00',
        status: 'idle',
      });
    }
  }, 1000);
},
// 放弃按钮点击事件
stopCountdown: function() {
  clearInterval(this.data.countdownTimer);
  this.setData({
    status: 'idle',
    countdown: 0,
    countdownFormat: '00:00:00',
  });
},
// 格式化倒计时时间为 xx:xx:xx
formatCountdown: function(time) {
  let hours = Math.floor(time / 3600);
  let minutes = Math.floor((time - hours * 3600) / 60);
  let seconds = time - hours * 3600 - minutes * 60;
  hours = ('0' + hours).slice(-2);
  minutes = ('0' + minutes).slice(-2);
  seconds = ('0' + seconds).slice(-2);
  return hours + ':' + minutes + ':' + seconds;
},
 
 
  
})

 

首先,在 Page 函数内部定义了一个 data 对象,用于存储页面数据。其中,包括了以下属性:

  • status: 用于表示当前倒计时器的状态,包括“空闲”(idle)、“计时中”(counting)和“已暂停”(paused)三种。默认值为“空闲”;
  • countdown: 用于表示当前倒计时器的剩余时间,单位为秒。默认值为 0;
  • countdownFormat: 用于表示根据剩余时间格式化后的倒计时时间字符串,例如“00:02:30”。默认值为空字符串;
  • countdownTimer: 用于存储倒计时器对象。默认值为 null。

接下来,定义了一些函数,包括:

  • inputCountdown: 处理用户在输入框中输入倒计时时间的事件;
  • startCountdown: 处理用户点击“开始计时”按钮的事件;
  • pauseCountdown: 处理用户点击“暂停”按钮的事件;
  • resumeCountdown: 处理用户点击“继续”按钮的事件;
  • stopCountdown: 处理用户点击“放弃”按钮的事件;
  • formatCountdown: 根据参数 time(单位为秒)格式化倒计时时间字符串。

其中,inputCountdown 函数用于获取用户在输入框中输入的合法倒计时时间(即大于 0 小于等于 360),并根据该时间更新 countdowncountdownFormat 属性。如果输入不合法则不做任何操作。

startCountdown 函数用于启动倒计时器,并更新 status 属性为 “计时中”。倒计时器以 1 秒为周期进行计时,每次计时结束时,都会根据剩余时间更新 countdowncountdownFormat 属性。如果倒计时器结束,则清除计时器对象,并将倒计时状态更新为“空闲”。

pauseCountdown 函数用于暂停倒计时器。它会清除计时器对象,并更新 status 属性为 “已暂停”。

resumeCountdown 函数用于恢复已暂停的倒计时器。它与 startCountdown 函数的实现基本相同,区别在于它直接获取 countdownTimer 对象,而不需要再新建计时器对象。

stopCountdown 函数用于放弃倒计时器。它清除计时器对象,并将倒计时状态更新为“空闲”,同时将 countdowncountdownFormat 属性都复位为默认值。

formatCountdown 函数用于将剩余时间(单位为秒)格式化为 “xx:xx:xx” 形式的字符串,以便在页面上进行展示。

最后,在 Page 函数中,将定义的函数作为事件处理函数绑定到对应的操作按钮上,从而实现了基本的倒计时器组件。

其中,通过使用微信小程序框架提供的数据绑定和事件监听等机制,实现了视图和逻辑之间的高度解耦和可扩展性。文章来源地址https://www.toymoban.com/news/detail-500249.html

到了这里,关于微信小程序(小小定时器)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NodeMCU ESP8266 的定时器使用以及非堵塞程序的实现

    本文会介绍ESP8266的定时器使用方法,传统的延时函数存在堵塞占用CPU的问题,后面对于系统中有延时以及定时的功能要求,怎么做才能是系统更加高效合理,我们来进一步学习一下。 通常我们使用 delay() 函数来进行一定时间的延时,这个函数接收一个 Int 型的传入参数,来制

    2024年02月04日
    浏览(34)
  • 【单片机】STM32单片机的各个定时器的定时中断程序,标准库,STM32F103

    高级定时器和普通定时器的区别(https://zhuanlan.zhihu.com/p/557896041): TIM1是高级定时器,使用的时钟总线是RCC_APB2Periph_TIM1,和普通定时器不一样。 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用

    2024年02月07日
    浏览(42)
  • uniapp 小程序实时且持续获取定位信息(全局设置一次)(单页面监听定位改变)(不采用定时器)

    本篇文章实现了uniapp 微信小程序实时获取定位信息,小程序打开即可持续获取定位信息, 位置更新也会触发相关自定义事件 tips: 如果需要做成区分登录状态的 看这篇优化后的文章: uniapp 持续获取定位(登录状态下才获取)(不采用定时器)(任意页面都可监听定位改变)_前端小胡兔的

    2024年02月14日
    浏览(50)
  • 【单片机】STM32单片机读取旋转编码器,TIM定时器编码器模式捕获,程序

    旋转编码器简单来说,就是会输出2个PWM,依据相位可以知道旋转方向,依据脉冲个数可以知道旋转的角度。一般旋转一圈有一个固定数值的脉冲个数。 旋转编码器广泛用于电机、或者角度传感器,STM32的定时器可以直接接入这两个波形获取到信息。 前两个引脚(接地和Vcc)

    2024年02月13日
    浏览(35)
  • 定时器定时中断&定时器外部时钟

    1、RCC开启时钟,此时定时器的基准时钟和整个外设的工作时钟都打开 2、选择时基单元的时钟源,对于定时中断选择内部时钟源 3、配置时基单元,包括预分频器,自动重装器,计数模式等 4、配置输出中断控制允许更新中断输出到NVIC 5、配置NVIC,在NVIC中打开定时器中断的通

    2024年02月15日
    浏览(37)
  • 【51单片机】如何设置中断函数(场景:在定时器工作完跳转到中断程序时,怎么识别我们的中断程序在哪里呢?)

    前言 大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 本章是【利用定时器和中断实现一个简单项目】中的一部分,感兴趣的老铁可以跳转传送门查看 传送门 欢迎订阅 YY 滴C++专栏!更多干货持续更新!以下是传送门! YY的《C++》专

    2024年02月19日
    浏览(36)
  • STM-32:TIM定时中断—定时器定时中断/定时器外部时钟

    定时器可以对输入的时钟进行计数,并在达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等

    2024年02月09日
    浏览(44)
  • 【Qt】定时器处理——定时器事件类QTimerEvent和定时器类QTimer使用

    Qt的定时器只能通过纯代码实现,定时器顾名思义,主要作用是定时特定的时间。 Qt提供了定时器事件类 QQTimerEvent 和定时器类 QTimer 实现定时器操作。 Qt提供了更高层次的定时器编程接口** QTimer **类,可以使用信号和槽,还可以设置定时一次。比较常用的方法有: QTimer::set

    2024年02月05日
    浏览(35)
  • JMeter定时器之同步定时器

      在实际生活中大家肯定遇到过一种场景,就是在某一时间或某一时刻,某件商品进行抢购,相当于秒杀;但是用JMeter进行测试的时候,如何模拟这种场景?用一种组件就可以实现,定时器中的“同步定时器”。 了解t同步定时器的基础功能;熟悉同步定时器的使用场景。

    2024年01月16日
    浏览(33)
  • STM32单片机(六)TIM定时器 -> 第二节:TIM定时中断练习(定时器定时中断和定时器外部时钟)

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月09日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包