小程序实现倒计时:解决ios倒计时失效(setInterval失效)
在使用之前需要先在page页引入wxTimer.js文件(这里我将文件放在/utils)
let timer = require('../../utils/wxTimer.js');
然后就可以使用啦
调用如下:
let wxTimer = new timer({
expired_at: "2018-9-27 23:28:00.14756",
complete: function () {
console.log("完成了")
},
expired: function () {
console.log("过期了(结束时间小于当前时间)")
},
})
wxTimer.start(this);
wxTimer.stop();
封装方法中因为用到page页的data,因此需要在调用start()的时候传入 this
在data中添加timer对象
data:{
timer: {
remaining: '00:00:00' }
}
在页面中就可以通过 timer.remaining 就可以显示倒计时
在调用wxTimer的时候,expired_at传入的值需要特别留意。
在小程序开发中,ios是个很头疼的事情,下面就“时间”来简单的说一下
对于上面代码中提到的 2018-9-27 23:28:00.14756
在ios中是不支持‘-’的,应该替换为 '/'
还有就是在ios中不支持 ‘.’ ,所以应该将'.'之后的数字去掉
在方法中这些都已经实现了,如果想了解详细可以查看代码
参数说明:
expired_at:倒计时结束时间
complete:回调函数,倒计时结束后调用改方法
expired:回调函数,当传入的时间过期时调用该方法
马云地址:https://gitee.com/WoRuoYiRuFeng/wx_smallProgram_countDown
附件(wxTimer.js)
var wxTimer = function (initObj) {
initObj = initObj || {};
this.complete = initObj.complete; //结束任务(方法)
this.expired = initObj.expired; //过期执行(方法)
this.intervarID; //计时ID
this.expired_at = initObj.expired_at || "00:00:00"; //过期时间
}
wxTimer.prototype = {
//开始
start: function (self) {
let that = this;
let expired_at = new Date(that.expired_at.replace(/-/g, "/")).getTime();
// expired_at = new Date(expired_at).getTime(); // ios下不执行,返回为null
let nowTime = new Date().getTime();
let remaining = (expired_at - nowTime); //计算剩余的毫秒数
// 过期
if (remaining < 0) {
if (that.expired) {
that.expired();
}
return
}
function begin() {
// 过期
// if (remaining < 0) {
// if (that.expired) {
// that.expired();
// }
// that.stop();
// }else{
let hours = parseInt(remaining / 1000 / 60 / 60 % 24, 10); //计算剩余的小时
let minutes = parseInt(remaining / 1000 / 60 % 60, 10);//计算剩余的分钟
let seconds = parseInt(remaining / 1000 % 60, 10);//计算剩余的秒数
hours = checkTime(hours);
minutes = checkTime(minutes);
seconds = checkTime(seconds);
// 结束任务
if (hours <= 0 && minutes <= 0 && seconds <= 0) {
if (that.complete) {
that.complete();
}
that.stop();
}
if (hours >= 0 || minutes >= 0 || seconds >= 0) {
self.setData({
['timer.remaining']: hours + ":" + minutes + ":" + seconds
});
}
remaining = remaining - 1000;
// }
}
function checkTime(timer){
if (timer < 10){
timer = "0" + timer;
}
return timer;
}
// begin();
this.intervarID = setInterval(begin, 1000);
},
//结束
stop: function () {
clearInterval(this.intervarID);
}
}
module.exports = wxTimer;
小程序实现倒计时:解决ios倒计时失效(setInterval失效)的更多相关文章
- 关于微信小程序开发环境苹果IOS真机预览报SSL协议错误问题解决方案
微信小程序开发环境苹果IOS真机预览报SSL协议错误问题 原文来自:https://blog.csdn.net/qq_27626333/articl ...
- 小程序clearinterval无效解决
小程序clearinterval无效解决 小程序clearinterval清除定时器无效,原因是定时器使用与清除方法不对导致的,我们应将定时器绑定变量,这样在关闭页面清空定时器clearinterva ...
- 微信小程序+PHP:动态显示项目倒计时(格式:4天7小时58分钟39秒)
1.一般我们说的显示秒杀都是指的单条数据,循环我没做. 效果: 2.wxml代码: <p class="endtime_act">距报名截止还有: <block ...
- 微信小程序【获取验证码】倒计时效果
最近开始接触微信小程序,会记录一些相关的小功能——例如这次是点击[获取验证码]按钮出现的倒计时效果. 原文: http://blog.csdn.net/Wu_shuxuan/article/detai ...
- 关于小程序bindregionchange事件在IOS崩溃的问题
先说下原因,我在bindregionchange事件触发函数中设置了经纬度,而latitude和longitude是绑定在map组件上的,滑动地图的过程中重新设置了地图中心点的经纬度,会导致地图本身的 ...
- 微信小程序单向数据流解决
1. 小程序中没有vue中v-model一样的双向数据机制,并且小程序也不像vue那样的进行 实时的数据驱动视图. 小程序页面数据加载完成后再去改变data中的数据页面是 不会有变化的. 2. 解决: ...
- 小程序 ----踩坑 ---安卓iOS兼容等
关于小程序一些小功能的代码都在这个GitHub上,感兴趣的可以去看看,https://github.com/huihuijiang/miniProgram目前有:列表左滑删除,拖拽浮标 一.小程序坑1 ...
- 微信小程序图片变形解决方法
微信小程序的image标签中有个mode属性,使用aspectFill即可 注:image组件默认宽度300px.高度225px mode 有效值: mode 有 13 种模式,其中 4 种是缩放模式 ...
- 小程序使用wxs解决wxml保留2位小数问题
1.出现溢出表现 从图中可以看到数字超出了很长长度.代码里面是如下这样的.为什么在0.35出现?或者一些相成的计算出现? 而 0.34却不会.(wap.0834jl.com) 0.41 也会出现,好像 ...
随机推荐
- 伪奢侈品iPhone大降价,肉搏国产手机胜算几何?
据国外媒体报道,苹果在中国降低iPhone价格的策略已收到明显的效果,自从1月11日正式调整价格以来,iPhone在苏宁电器平台上的销量飙升83%,而天猫上的销量也增长了76%,其中最受欢迎的机型是i ...
- centos7 bond双网卡
[root@pay network-scripts]# cat ifcfg-bond0 |grep -v \#TYPE="Ethernet"PROXY_METHOD="n ...
- lunix下的redis安装
https://blog.csdn.net/qq_35992900/article/details/82950157
- Kubernetes 二进制部署(二)集群部署(多 Master 节点通过 Nginx 负载均衡)
0. 前言 紧接上一篇,本篇文章我们尝试学习多节点部署 kubernetes 集群 并通过 haproxy+keepalived 实现 Master 节点的负载均衡 1. 实验环境 实验环境主要为 5 ...
- Day3-M-Cable master POJ1064
Inhabitants of the Wonderland have decided to hold a regional programming contest. The Judging Commi ...
- IOS UIKIT_EXTERN, __attribute__((visibility ("default"))) 是啥玩意?
问题提出 在学习IOS时候,碰到一个函数NSStringFromCGPoint (UIGeometry.h) 其原型是 UIKIT_EXTERN NSString *NSStringFromCGPoi ...
- 嵊州普及Day4T2
题意:有一个单行走廊,每回合第ai个展柜会冒出来一只鬼,右边尽头有一个人间大炮和向最左传送门(费用均1金币),你需要每回合将所有鬼交换展柜,全部至最右,问若从一到n所有回合结束是需多少金币可射死所有鬼 ...
- 1-5SpringBoot操作之Spring-Data-Jpa(二)CRUD实现
本帖来演示下SpringBoot下,实用Spring-Data-Jpa来实现CRUD操作,视图层采用Freemarker 这里我们先把application.properties修改成applicat ...
- 使用Vue 和 内网穿透:返回 invalid host header
原因:新版的webpack-dev-server出于安全考虑,默认检查hostname,如果它不是配置内的,将会中断访问. -------------------------------------- ...
- 分享一款免费的工控组态软件(PCHMI)
PCHMI严格的讲它并不是一款组态软件,也不是一款SCADA软件,而是一个基于.NET构架的DLL文件,开发者可以使用微软的Visual Studio将PCHMI.DLL加载到工具箱里面进行二次开发. ...