html计时器组件,vue 计时器组件的实现代码

5268f80b9b1e01f982625ef6fac83ca1.png

整理文档,搜刮出一个vue 计时器组件的代码,稍微整理精简一下做下分享。

:sendSync="sendSync"

:autoStart="autoStart"

:defaultVal="defaultVal"

>{{countString}}

export default {

data() {

return {

isStart: false,

globalTimer: null,//获取setInterval对象值

countString: '0秒', //用来显示时间

day: 0,

hour: 0,

minute: 0,

second: 0,

millisecond: 0,

countVal: this.defaultVal, //获取初始值

pauseTime: 0,

}

},

watch: {

'countString': {

deep: true,

handler: function(val, oldVal) {

var vm = this

if (vm.needSendSunc) {

vm.passToParent(val)

}

}

},

'needSendSunc': {

deep: true,

handler: function(val) {

var vm = this

if (val) {

vm.passToParent(vm.countString)

}

}

}

},

props: {

sendSync: {

type: Boolean,

default: false,

},

autoStart: {

type: Boolean,

default: false,

},

defaultVal: {

type: Number,

default: 0,

}

},

mounted() {

var vm = this

if (vm.autoStart) {

vm.startCountFn()

}

},

computed: {

needSendSunc: function() {

return this.sendSync

}

},

created: function() {

this.$on('startCount', function() {

this.startCountFn()

});

this.$on('stopCount', function() {

this.stopCountFn()

});

},

components: {},

methods: {

counterFn: function(counterTime) {

var vm = this

var nowDate = new Date().getTime()

if(vm.pauseTime == 0){

var num = nowDate - counterTime //计算时间毫秒差

}else{

vm.pauseTime = vm.pauseTime +10

var num = vm.pauseTime - counterTime //计算时间毫秒差

}

var leave1 = num % (24 * 3600 * 1000) //计算天数后剩余的毫秒数

var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数

var leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数

vm.day = Math.floor(num / (24 * 3600 * 1000)) //计算相差天数

vm.hour = Math.floor(leave1 / (3600 * 1000))//计算相差小时

vm.minute = Math.floor(leave2 / (60 * 1000))//计算相差分钟

vm.second = Math.round(leave3 / 1000) //计算相差秒

if (vm.day > 0) {

vm.countString = `${vm.day}天 ${vm.hour}小时 ${vm.minute}分 ${vm.second}秒`;

} else if (vm.hour > 0) {

vm.countString = `${vm.hour}小时 ${vm.minute}分 ${vm.second}秒`;

} else if (vm.minute > 0) {

vm.countString = `${vm.minute}分 ${vm.second}秒`;

} else {

vm.countString = `${vm.second}秒`;

}

},

startCountFn: function() {

var vm = this

if (!vm.isStart) {

vm.countVal = vm.countVal ? vm.countVal : new Date().getTime()

var timer = setInterval(function() {

vm.counterFn(vm.countVal)

}, 10)

vm.globalTimer = timer

vm.isStart = true

}

},

stopCountFn: function() {

var vm = this

if (vm.isStart) {

window.clearInterval(vm.globalTimer)

vm.globalTimer = null;

vm.isStart = false

vm.pauseTime = new Date().getTime()

}

},

passToParent: function(data) {

var vm = this

this.$emit("getDataFromChild", data)

},

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

1428d0e076c3959ab11d28a39bc84fab.png

5268f80b9b1e01f982625ef6fac83ca1.png

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值