Vue实现60秒倒计时

这里我写了一个简单的类似于验证码倒计时的60秒倒计时。

先和大家说说我的思路:

  1. 在模板部分,包含一个DIV元素,具有类名为"send",并绑定了一个点击事件@click=“sendIng”。
  2. 在DIV元素内,使用了两个v-show指令来控制子元素的显示。当showTime为true时,显示"发送"文本;当showTime为false时,显示getTime属性的值。
  3. 在脚本部分,定义了一个data对象,其中包含了showTime、getTime和timer属性。showTime初始值为true,用于控制"发送"文本和倒计时文本的显示。getTime初始值为60,用于倒计时的显示。timer用于存储定时器的引用。
  4. 在sendIng方法中,点击事件触发后,会设置一个定时器setInterval,每1000毫秒减少一次getTime的值。同时控制台会输出当前的getTime值。
  5. 若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>

图示:
默认情况:
Vue实现60秒倒计时_第1张图片
点击发送后:(这里已经开始倒计时了)
Vue实现60秒倒计时_第2张图片
最后时间为0时自动变为发送(这里就不放图片了,大家可以自己试一下)

以上就是一个简单的方法实例,感兴趣可以看一下,有什么需要补充的请评论留言~

你可能感兴趣的:(Vue,学习,前端,vue.js,javascript,开发语言)