首頁 web前端 js教程 怎樣使用Vue實現倒數按鈕

怎樣使用Vue實現倒數按鈕

Jun 02, 2018 pm 02:51 PM
倒數計時 實現 按鈕

這次帶給大家怎樣使用Vue實現倒數按鈕,使用Vue實現倒數按鈕的注意事項有哪些,下面就是實戰案例,一起來看一下。

在專案開發裡,我們常常會遇到發送驗證碼、點擊了之後有60秒倒數計時的按鈕,很常見卻也很簡單,但是在寫這個按鈕的時候有個別地方還要注意下,今天就寫出來,如有問題歡迎指正!

完成的效果如下:

 

為了更快顯示出效果,我把時間設為了5秒。按鈕在點擊之後會出現倒數計時,同時按鈕變成不可點擊狀態,樣式也會發生變化,滑鼠懸浮上的樣子也會改變。

接下來我們用程式碼來實現:

<button class="button" @click="countDown">
 {{content}}
</button>
...
data () {
  return {
   content: '发送验证码',  // 按钮里显示的内容
   totalTime: 60      //记录具体倒计时时间
  }
},
methods: {
  countDown() {
    let clock = window.setInterval(() => {
      this.total--
      this.content = this.total + 's后重新发送'
    },1000)
  }
}
登入後複製

在data裡加了兩條數據,一條用來記錄時間,一條用來盛放倒數按鈕的具體內容。在countDown函數裡我們用了setInterval計時器,每隔一秒totalTime減1,同時改變按鈕裡顯示的內容。在window.setInterval裡用了箭頭函數,因為它會自動綁定外面的this,所以就不用先存this了。

效果如下圖:

 

但這個按鈕還有一些問題:

點擊了按鈕之後過了1秒就直接從59秒開始倒數了,中間的60不見了
倒數計時的時候還可以點擊
還沒有清除倒數

接下來需要繼續完善countDown函數來解決這些問題。

countDown () {
 this.content = this.totalTime + 's后重新发送' //这里解决60秒不见了的问题
 let clock = window.setInterval(() => {
  this.totalTime--
  this.content = this.totalTime + 's后重新发送'
  if (this.totalTime < 0) {     //当倒计时小于0时清除定时器
    window.clearInterval(clock)
    this.content = &#39;重新发送验证码&#39;
    this.totalTime = 60
    }
 },1000)
},
登入後複製

上面的程式碼解決了60不見的問題,同時當totalTime小於0時清除同時器、重新設定按鈕裡的content、將totalTime重設為60以便下次使用。

倒數10秒的效果:

 

發現bug,多次點擊之後,倒講時速度變快,這是因為每次點擊都會啟動一個setInterval,這些setInterval都會減少totalTime。解決的方法也很簡單:簡單節流一下就好了,就是第一次點擊按鈕之後讓countDonw這個函數的程式碼不可執行,等到倒數結束之後才可以再執行。

data () {
  return {
   content: &#39;发送验证码&#39;,
   totalTime: 10,
   canClick: true //添加canClick
  }
}
...
countDown () {
 if (!this.canClick) return  //改动的是这两行代码
 this.canClick = false
 this.content = this.totalTime + &#39;s后重新发送&#39;
 let clock = window.setInterval(() => {
  this.totalTime--
  this.content = this.totalTime + 's后重新发送'
  if (this.totalTime < 0) {
   window.clearInterval(clock)
   this.content = &#39;重新发送验证码&#39;
   this.totalTime = 10
   this.canClick = true  //这里重新开启
  }
 },1000)
}
登入後複製

在data裡加入canClick,預設是true,如果canClick為true,countDown裡的程式碼可以執行,如果是false就不行。每執行一次就將canClick設為false,而只在倒數結束的時候再改為true。這樣剛才的問題就沒有了。

 

到這裡其實就差不多了,但還可以調整下樣式:

<button class="button" :class="{disabled: !this.canClick}" @click="countDown">
...
.disabled{
 background-color: #ddd;
 border-color: #ddd;
 color:#57a3f3;
 cursor: not-allowed; // 鼠标变化
}
登入後複製

效果:

 

#這個倒數按鈕十分簡單,但是我第一次寫的時候還是寫的很亂,而且那時候還不知道函數節流的概念。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

怎麼利用Vue寫一個雙向資料綁定

怎麼使用Vue實作proxy代理

以上是怎樣使用Vue實現倒數按鈕的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1269
29
C# 教程
1248
24
華為手機如何實現雙微信登入? 華為手機如何實現雙微信登入? Mar 24, 2024 am 11:27 AM

華為手機如何實現雙微信登入?隨著社群媒體的興起,微信已成為人們日常生活中不可或缺的溝通工具之一。然而,許多人可能會遇到一個問題:在同一部手機上同時登入多個微信帳號。對於華為手機用戶來說,實現雙微信登入並不困難,本文將介紹華為手機如何實現雙微信登入的方法。首先,華為手機自帶的EMUI系統提供了一個很方便的功能-應用程式雙開。透過應用程式雙開功能,用戶可以在手機上同

為什麼我的筆記型電腦在按下電源按鈕後無法啟動? 為什麼我的筆記型電腦在按下電源按鈕後無法啟動? Mar 10, 2024 am 09:31 AM

您的Windows筆記型電腦無法啟動的原因可能有很多。記憶體故障、電池耗盡、電源按鈕故障或硬體問題都是常見原因。下面提供了一些解決方案,幫助您解決這個問題。按下電源按鈕後筆記型電腦無法啟動如果您的Windows筆記型電腦在按下電源按鈕後仍無法啟動,您可以採取以下步驟來解決問題:你的筆記本充滿電了嗎?執行硬重置清理你的筆記型電腦重新拔插內存透明的CMOS型電池帶上你的筆記型電腦去修理。 1]您的筆記型電腦充滿電了嗎?首先要做的事情是檢查您的筆記型電腦是否已經完全充電。如果電池耗盡,筆記型電腦將無法啟動

PHP程式設計指南:實作斐波那契數列的方法 PHP程式設計指南:實作斐波那契數列的方法 Mar 20, 2024 pm 04:54 PM

程式語言PHP是一種用於Web開發的強大工具,能夠支援多種不同的程式設計邏輯和演算法。其中,實作斐波那契數列是一個常見且經典的程式設計問題。在這篇文章中,將介紹如何使用PHP程式語言來實作斐波那契數列的方法,並附上具體的程式碼範例。斐波那契數列是一個數學上的序列,其定義如下:數列的第一個和第二個元素為1,從第三個元素開始,每個元素的值等於前兩個元素的和。數列的前幾元

iPhone 16長什麼樣子? iPhone 16有哪些變化? iPhone 16長什麼樣子? iPhone 16有哪些變化? Apr 07, 2024 pm 05:10 PM

iPhone15系列發表後,有關蘋果新品iPhone16的外觀和配置相關爆料就沒斷過。 iPhone16長什麼樣? iPhone16有改進嗎?近日,有海外部落客展示了iPhone16系列機型的設計,整體設計和iPhone15系列基本上相同。從圖片中可以看到,iPhone16系列全系標配了一個全新的「拍攝」按鈕,讓使用者更方便地進行拍照。此外,其它設計細節暫時還不得而知。訊息顯示,這顆新增的按鈕將用於拍攝視頻,位於電源按鈕下方。以往的消息曾提到其可能是一顆電容式固態按鈕,但最近的說法顯示這應該還是一顆

解決IE瀏覽器按鈕無回應的方法 解決IE瀏覽器按鈕無回應的方法 Jan 30, 2024 am 10:48 AM

IE瀏覽器點擊網頁按鈕沒反應怎麼辦?我們在點擊網頁按鈕沒有反應的話,可以在相容性視圖中進行設定!有小夥伴在使用IE瀏覽器的時候,發現點擊網頁中的按鈕,瀏覽器不會有任何的反應,這樣我們就無法使用該網頁的功能,我們可以怎麼樣設置,小編下面整理了IE瀏覽器點擊網頁按鈕沒有反應解決方法,不會的話跟著我一起往下看吧! IE瀏覽器點選網頁按鈕沒有反應解決方法1、開啟IE瀏覽器,點選操作列上【工具】按鈕,並點選【相容性檢視】設置,如圖所示。 2.在【相容性檢視】設定頁面中,點選右邊的【新增】按鈕,將該網站填入,

如何在華為手機上實現微信分身功能 如何在華為手機上實現微信分身功能 Mar 24, 2024 pm 06:03 PM

如何在華為手機上實現微信分身功能隨著社群軟體的普及和人們對隱私安全的日益重視,微信分身功能逐漸成為人們關注的焦點。微信分身功能可以幫助使用者在同一台手機上同時登入多個微信帳號,方便管理和使用。在華為手機上實現微信分身功能並不困難,只需要按照以下步驟操作即可。第一步:確保手機系統版本和微信版本符合要求首先,確保你的華為手機系統版本已更新至最新版本,以及微信App

掌握Golang如何實現遊戲開發的可能性 掌握Golang如何實現遊戲開發的可能性 Mar 16, 2024 pm 12:57 PM

在現今的軟體開發領域中,Golang(Go語言)作為一種高效、簡潔、並發性強的程式語言,越來越受到開發者的青睞。其豐富的標準庫和高效的並發特性使它成為遊戲開發領域的一個備受關注的選擇。本文將探討如何利用Golang來實現遊戲開發,並透過具體的程式碼範例來展示其強大的可能性。 1.Golang在遊戲開發中的優勢作為靜態類型語言,Golang正在建構大型遊戲系統

PHP遊戲需求實作指南 PHP遊戲需求實作指南 Mar 11, 2024 am 08:45 AM

PHP遊戲需求實現指南隨著網路的普及和發展,網頁遊戲的市場也越來越火爆。許多開發者希望利用PHP語言來開發自己的網頁遊戲,而實現遊戲需求是其中一個關鍵步驟。本文將介紹如何利用PHP語言來實現常見的遊戲需求,並提供具體的程式碼範例。 1.創造遊戲角色在網頁遊戲中,遊戲角色是非常重要的元素。我們需要定義遊戲角色的屬性,例如姓名、等級、經驗值等,並提供方法來操作這些

See all articles