这里我写了一个简单的类似于验证码倒计时的60秒倒计时。
先和大家说说我的思路:
- 在模板部分,包含一个DIV元素,具有类名为"send",并绑定了一个点击事件@click=“sendIng”。
- 在DIV元素内,使用了两个v-show指令来控制子元素的显示。当showTime为true时,显示"发送"文本;当showTime为false时,显示getTime属性的值。
- 在脚本部分,定义了一个data对象,其中包含了showTime、getTime和timer属性。showTime初始值为true,用于控制"发送"文本和倒计时文本的显示。getTime初始值为60,用于倒计时的显示。timer用于存储定时器的引用。
- 在sendIng方法中,点击事件触发后,会设置一个定时器setInterval,每1000毫秒减少一次getTime的值。同时控制台会输出当前的getTime值。
- 若getTime小于等于0,则清除定时器clearInterval,将showTime设为true,并重置getTime为60。
最后,将showTime设为false,以切换显示"发送"文本和倒计时文本。
废话不多说,上代码:
html部分:
<template>
<div>
<div class="send" @click="sendIng">
<div v-show="showTime">发送</div>
<div v-show="!showTime">{{ getTime }}</div>
</div>
</div>
</template>
css部分:
<style lang="scss" scoped>
.send {
width: 70px;
height: 40px;
margin-top: 50px;
margin-left: 50px;
border: 1px solid #3189ee;
border-radius: 8px;
color: #3189ee;
text-align: center;
line-height: 40px;
cursor: pointer;
}
</style>
Js部分:
<script>
export default {
data() {
return {
showTime: true,
getTime: 60,
timer: "",
};
},
methods: {
//点击发送出现60秒倒计时
sendIng() {
let timer = setInterval(() => {
this.getTime -= 1;
console.log(this.getTime);
if (this.getTime <= 0) {
clearInterval(timer);
this.showTime = true;
this.getTime = 60;
}
}, 1000);
this.showTime = false;
},
},
};
</script>
图示:
默认情况:
点击发送后:(这里已经开始倒计时了)
最后时间为0时自动变为发送(这里就不放图片了,大家可以自己试一下)
以上就是一个简单的方法实例,感兴趣可以看一下,有什么需要补充的请评论留言~