需求
今天写方法的时候用到了倒计时的方法,看起来很简单,但是实现起来还是有些麻烦的,记录一下自己的创作过程;
实现:传入一个时间数字,返回参数,实现倒计时的效果
效果
vue部分
<h3><b>剩余时间: <span style="color:red;">{{hour ? hourString + '时' + minuteString + '分' + secondString + '秒' : minuteString + '分' + secondString + '秒'}}</span></b></h3>
data定义部分
data() {
return {
form:{},
hour: '',
minute: '',
second: '',
timer: ''
}
},
初始化created调用部分、计算属性computed
created() {
if (this.$route.query.form != '' && this.$route.query.form != null && this.$route.query.form != undefined) {
this.form = JSON.parse(this.$route.query.form);
console.log(this.form);
this.hour = Math.floor((this.form.examinationLength * 60 / 3600) % 24)
this.minute = Math.floor((this.form.examinationLength * 60 / 60) % 60)
this.second = Math.floor(this.form.examinationLength * 60 % 60)
this.countDowm()
}
},
computed: {
hourString() {
return this.formatNum(this.hour)
},
minuteString() {
return this.formatNum(this.minute)
},
secondString() {
return this.formatNum(this.second)
}
},
method方法部分
methods:{
//倒计时
countDowm() {
var self = this
clearInterval(this.timer)
this.timer = setInterval(function () {
console.log(console.log("hour=>",self.hour));
console.log(console.log("minute=>",self.minute));
console.log(console.log("second=>",self.second));
if (self.hour === 0) {
console.log("1");
if (self.minute !== 0 && self.second === 0) {
self.second = 59
self.minute -= 1
} else if (self.minute === 0 && self.second === 0) {
self.second = 0
clearInterval(self.timer)
} else {
self.second -= 1
}
} else {
console.log("2");
if (self.minute !== 0 && self.second === 0) {
self.second = 59
self.minute -= 1
} else if (self.minute === 0 && self.second === 0) {
self.hour -= 1
self.minute = 59
self.second = 59
} else {
self.second -= 1
}
}
}, 1000)
},
formatNum(num) {
return num < 10 ? '0' + num : '' + num
},
}
结尾
方法直接复制粘贴就可以用