這次帶給大家Vue實現倒數按鈕,Vue實現倒數按鈕的注意事項有哪些,下面就是實戰案例,一起來看一下。
在專案開發裡,我們常常會遇到發送驗證碼、點擊了之後有60秒倒數的按鈕,很常見卻也很簡單,但是在寫這個按鈕的時候有個別地方還要注意下,今天寫出來,如有問題歡迎指正!
完成的效果如下:
為了更快顯示出效果,我把時間設為了5秒。按鈕在點擊之後會出現倒數計時,同時按鈕變成不可點擊狀態,樣式也會發生變化,滑鼠懸浮上的樣子也會改變。
接下來我們用程式碼來實現:
<button> {{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 <p style="text-align: left;">上面的程式碼解決了60不見的問題,同時當totalTime小於0時清除同時器、重新設定按鈕裡的content、將totalTime重設為60以便下次使用。 </p><p style="text-align: left;">倒數10秒的效果:</p><p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/736f2194941381ade91bf29ce90d3696-2.gif?x-oss-process=image/resize,p_40" class="lazy" alt=""> </p><p style="max-width:90%">發現bug,多次點擊之後,倒講時速度變快,這是因為每次點擊都會啟動一個setInterval,這些setInterval都會減少totalTime。解決的方法也很簡單:簡單節流一下就好了,就是第一次點擊按鈕之後讓countDonw這個函數的程式碼不可執行,等到倒數結束之後才可以再執行。 </p><pre class="brush:php;toolbar:false">data () { return { content: '发送验证码', totalTime: 10, canClick: true //添加canClick } } ... countDown () { if (!this.canClick) return //改动的是这两行代码 this.canClick = false this.content = this.totalTime + 's后重新发送' let clock = window.setInterval(() => { this.totalTime-- this.content = this.totalTime + 's后重新发送' if (this.totalTime <p style="text-align: left;">在data裡加入canClick,預設是true,如果canClick為true,countDown裡的程式碼可以執行,如果是false就不行。每執行一次就將canClick設為false,而只在倒數結束的時候再改為true。這樣剛才的問題就沒有了。 </p><p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/736f2194941381ade91bf29ce90d3696-3.gif?x-oss-process=image/resize,p_40" class="lazy" alt=""> </p><p style="max-width:90%">到這裡其實就差不多了,但還可以調整下樣式:</p><pre class="brush:php;toolbar:false"><button> ... .disabled{ background-color: #ddd; border-color: #ddd; color:#57a3f3; cursor: not-allowed; // 鼠标变化 }</button>
效果:
#這個倒數按鈕十分簡單,但是我第一次寫的時候還是寫的很亂,而且那時候還不知道函數節流的概念。
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
以上是Vue實現倒數按鈕的詳細內容。更多資訊請關注PHP中文網其他相關文章!

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

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

Dreamweaver Mac版
視覺化網頁開發工具