Vue写一个简单的倒计时按钮功能

下面是Vue写一个简单的倒计时按钮功能的完整攻略。

步骤一:创建Vue实例

首先,在HTML文件中引入Vue.js库,并在JS文件中创建一个Vue实例。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Vue Countdown Button</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  </head>
  <body>
    <div id="app">
      <button v-on:click="startCountdown">Start Countdown</button>
    </div>
    <script src="countdown.js"></script>
  </body>
</html>
// countdown.js
var app = new Vue({
  el: '#app',
  data: {
    countdown: 10,
    isCounting: false
  },
  methods: {
    startCountdown: function() {
      if (!this.isCounting) {
        this.isCounting = true;
        this.countdownTimer = setInterval(() => {
          if (this.countdown > 0) {
            this.countdown--;
          } else {
            clearInterval(this.countdownTimer);
            this.isCounting = false;
          }
        }, 1000);
      }
    }
  }
});

步骤二:实现倒计时功能

在步骤一的Vue实例中,我们定义了两个数据属性,分别是倒计时时间(countdown)和计时器是否在运行(isCounting),并且定义了一个开始倒计时的方法(startCountdown)。

这个方法首先检查计时器是否正在运行,如果是就不做任何事情,如果不是就开始倒计时。在倒计时过程中,我们使用setInterval函数来每秒减少一秒的时间,直到时间减少到0,清除计时器并将isCounting属性设为false

我们可以把这个方法绑定到一个按钮的点击事件上。例如,我们在div标签中添加一个按钮,点击按钮执行startCountdown方法。

<div id="app">
  <button v-on:click="startCountdown">Start Countdown</button>
  <p v-if="isCounting">Countdown: {{ countdown }}</p>
</div>

在这里,我们绑定了一个v-if指令来显示当前倒计时的时间,只有在计时器正在运行时才会显示。

步骤三:添加样式

你可能会希望自己的按钮和倒计时在页面上显得更加美观。我们可以使用内联CSS样式对按钮和倒计时进行定制。

<style>
  button {
    padding: 10px 20px;
    background-color: #3498db;
    color: #fff;
    border: none;
    font-size: 16px;
    border-radius: 5px;
  }
  button:hover {
    cursor: pointer;
    background-color: #2980b9;
  }
  p {
    font-size: 24px;
    margin-top: 20px;
  }
</style>

示例

下面是两个简单的例子,展示了如何使用Vue编写具有倒计时和按钮的代码。

示例一:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Vue Countdown Button Example 1</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
      button {
        padding: 10px 20px;
        background-color: #3498db;
        color: #fff;
        border: none;
        font-size: 16px;
        border-radius: 5px;
      }
      button:hover {
        cursor: pointer;
        background-color: #2980b9;
      }
      p {
        font-size: 24px;
        margin-top: 20px;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <button v-on:click="startCountdown" v-bind:disabled="isCounting">{{ buttonText }}</button>
      <p v-if="isCounting">Countdown: {{ countdown }}</p>
    </div>
    <script src="countdown.js"></script>
  </body>
</html>
// countdown.js
var app = new Vue({
  el: '#app',
  data: {
    countdown: 10,
    isCounting: false,
    buttonText: 'Start Countdown'
  },
  methods: {
    startCountdown: function() {
      if (!this.isCounting) {
        this.isCounting = true;
        this.buttonText = 'Stop Countdown';
        this.countdownTimer = setInterval(() => {
          if (this.countdown > 0) {
            this.countdown--;
          } else {
            clearInterval(this.countdownTimer);
            this.isCounting = false;
            this.buttonText = 'Start Countdown';
          }
        }, 1000);
      } else {
        clearInterval(this.countdownTimer);
        this.isCounting = false;
        this.buttonText = 'Start Countdown';
        this.countdown = 10;
      }
    }
  }
});

示例二:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Vue Countdown Button Example 2</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
      button {
        padding: 10px 20px;
        background-color: #3498db;
        color: #fff;
        border: none;
        font-size: 16px;
        border-radius: 5px;
      }
      button:hover {
        cursor: pointer;
        background-color: #2980b9;
      }
      p {
        font-size: 24px;
        margin-top: 20px;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <button v-on:click="startCountdown">Start Countdown</button>
      <p v-if="isCounting">Countdown: {{ countdown }}</p>
    </div>
    <script src="countdown.js"></script>
  </body>
</html>
// countdown.js
var app = new Vue({
  el: '#app',
  data: {
    countdown: 30,
    isCounting: false
  },
  methods: {
    startCountdown: function() {
      if (!this.isCounting) {
        this.isCounting = true;
        this.countdownTimer = setInterval(() => {
          if (this.countdown > 0) {
            this.countdown--;
          } else {
            clearInterval(this.countdownTimer);
            this.isCounting = false;
          }
        }, 1000);
      }
    }
  }
});

以上就是Vue写一个简单的倒计时按钮功能的完整攻略。希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue写一个简单的倒计时按钮功能 - Python技术站

(0)
上一篇 2023年5月29日
下一篇 2023年5月29日

相关文章

  • 详解VueJS 数据驱动和依赖追踪分析

    让我们来详细讲解一下VueJS数据驱动和依赖追踪。 什么是数据驱动 在VueJS中,数据驱动是指视图(DOM)是由数据(Data)来驱动的,即数据的变化引起视图的更新。这是通过VueJS中的观察者(Observer)实现的。 在VueJS中,观察者是被绑定到数据上的。当数据变化时,观察者会观察到变化,并通知视图进行更新。 什么是依赖追踪 在VueJS中,凡是…

    Vue 2023年5月27日
    00
  • 软件加壳、脱壳基础介绍

    软件加壳、脱壳基础介绍 什么是软件加壳? 软件加壳指对软件进行加密和封装,使得软件的流程难以被理解和复制。加壳可以提高软件的安全性,防止被非法破解或复制、篡改和分发。 当一个软件被加密加壳之后,我们需要在运行之前进行解密解壳。具体来说,就是通过将加密后的数据进行解码,还原出原始的格式。 什么是软件脱壳? 软件脱壳是指将已经加密封装的软件(也就是“壳”)进行解…

    Vue 2023年5月28日
    00
  • vue2.0中组件传值的几种方式总结

    下面来详细讲解“vue2.0中组件传值的几种方式总结”的攻略,主要包括以下几种方式: 1. 父子组件之间传值 父组件向子组件传值:使用props方式,父组件通过属性传递数据给子组件。在子组件中可以使用props定义来接收数据。 示例: 父组件中定义一个属性data,值为字符串类型,在子组件中用props属性来接收定义的属性data。子组件中通过{{}}绑定,…

    Vue 2023年5月27日
    00
  • 浅谈vuex之mutation和action的基本使用

    概述 Vuex是状态管理库,它可以让我们更好地管理应用程序状态。Vuex提供了许多有用的功能,其中最常使用的功能是mutation和action。mutation负责更改vuex的状态,而action则用于组织和分发mutation。本篇文章将会简单介绍mutation和action的基本使用。 Mutation mutation是用来更改vuex状态的函数…

    Vue 2023年5月28日
    00
  • 详解Vue3中ref和reactive函数的使用

    那么首先我们需要了解Vue3中ref和reactive函数的基本用法。 什么是ref和reactive函数 在Vue3中,数据响应式的核心原理是基于ES6提供的新特性Proxy进行实现的。ref和reactive有以下作用: ref函数:用于创建一个响应式的基本数据类型变量。 reactive函数:用于创建一个响应式的对象数据类型变量。 ref函数的基本用法…

    Vue 2023年5月28日
    00
  • Vue实现答题功能

    Vue 实现答题功能的完整攻略包含以下步骤: 步骤一:设计数据结构 在 Vue 实现答题功能之前,我们首先需要设计数据结构。数据结构应该包含题目、选项、答案等信息。例如,以下是一个选择题的数据结构: const questions = [ { question: ‘以下哪个不是JavaScript的数据类型?’, options: [‘Undefined’,…

    Vue 2023年5月27日
    00
  • 一步步详细讲解vue3配置ESLint

    下面是一步步详细讲解vue3配置ESLint的完整攻略: 步骤一:安装ESLint 首先,我们需要在项目中安装ESLint。可以使用下面的命令来进行安装: npm install eslint –save-dev 步骤二:安装Vue3的ESLint插件 接下来,我们需要安装Vue3的ESLint插件。可以使用下面的命令进行安装: npm install e…

    Vue 2023年5月28日
    00
  • element-ui配合node实现自定义上传文件方式

    下面是详细的攻略: element-ui配合node实现自定义上传文件方式 一、前端部分 安装element-ui 首先,在项目中安装element-ui,具体命令为: npm install element-ui –save 配置上传组件 接着,需要在前端页面中配置上传组件,例如: <template> <el-upload class…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部