利用moment為基礎,基於DOM實現一個多個倒計時同時進行的js庫方便使用

来源:http://www.cnblogs.com/wonderchief/archive/2017/01/19/6308740.html
-Advertisement-
Play Games

moment非常強大,提供了很多時間方法的封裝,項目需要一個小倒計時的功能,網上找了很多不合適,決定自己寫一個,直接上代碼 用法: html頁面首先要引入moment才能使用我上面的方法 假設HTML里要放入倒計時的地方在這裡 頁面上可以寫js: 看官們外觀可以修改上述代碼去做出你自己的風格,以上內 ...


moment非常強大,提供了很多時間方法的封裝,項目需要一個小倒計時的功能,網上找了很多不合適,決定自己寫一個,直接上代碼

//定義一個立即執行的函數
(function () { var Ticts=function Ticts() { this.ticts = {}; }; Ticts.prototype.createTicts=function(id, dealline) { var ticts=this; var time=moment(dealline).diff(moment()); var _ticts=this.ticts[id] = { dealine: dealline , id: id , time: time , interval: setInterval(function () { var t = null; var d = null; var h = null; var m = null; var s = null;
         //js預設時間戳為毫秒,需要轉化成秒 t
= _ticts.time / 1000; d = Math.floor(t / (24 * 3600)); h = Math.floor((t - 24 * 3600 * d) / 3600); m = Math.floor((t - 24 * 3600 * d - h * 3600) / 60); s = Math.floor((t - 24 * 3600 * d - h * 3600 - m * 60));
         //這裡可以做一個格式化的處理,甚至做毫秒級的頁面渲染,基於DOM操作,太多個倒計時一起會導致頁面性能下降 document.getElementById(id).innerHTML
= d + '天' + h + '小時' + m + '分鐘' + s + '秒'; _ticts.time -= 1000; if (_ticts.time < 0)
           ticts.deleteTicts(id);//判斷是否到期,到期後自動刪除定時器 },
1000) } }; Ticts.prototype.deleteTicts = function(id) { clearInterval(this.ticts[id].interval);//清楚定時器的方法,需要定時器的指針作為參數傳入clearInterval delete this.ticts[id];//通過delete的方法刪除對象中的屬性 };
//新建一個ticts對象,放到window全局函數中,那麼在html頁面是(或者其他js文件)可以訪問該對象 window.Ticts
=new Ticts(); })();

用法:

html頁面首先要引入moment才能使用我上面的方法

    <script src="//cdn.bootcss.com/moment.js/2.17.1/moment.min.js"></script>

假設HTML里要放入倒計時的地方在這裡

                    <div id="aaa"></div>
                    <div id="aaa1"></div>
                    <div id="aaa2"></div>

頁面上可以寫js:

    Ticts.createTicts("aaa","2017-1-20 20:20:20");
    Ticts.createTicts("aaa1","2017-1-22 20:20:20");
    Ticts.createTicts("aaa2","2017-1-23 20:20:20");

看官們外觀可以修改上述代碼去做出你自己的風格,以上內容包含一些JS的特性,有很多新手對JS不熟不瞭解一些JS的機制例如原型鏈\this指針\作用域等等這些,這也是給新手們一個很好的學習範例


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • CleverTabs是一款jQuery插件,所需jQuery版本:1.6.1,jQuery UI樣式版本:1.8.13;其功能為創建jQuery UI風格的Tab用於顯示iframe。 本示例中符加了jQuery.contextMenu插件,我修改了其樣式,使用了jQuery UI的皮膚 運行一下 ...
  • protractor內代碼的語法是基於ES6的,比如:裡面用到了展開運算符“...”,node.js 6.0以下是不支持該語法特性。 所以,安裝protractor是不會報錯,但運行webdriver-manager的升級就會報那三個點無法識別。 需要將node.js升級到6.0+就能解決該問題。 ...
  • 以管理員身份運行windows PowerShell並安裝Chocolatey 我的機器是windows10,可以在開始菜單->所有應用->W欄中找到Window PowerShell並運行。 在命令行中運行命令: 等待安裝完成,預設會安裝最新版。 安裝後運行命令確認: 我這裡得到的版本回覆: 確認 ...
  • 前面的話   當我們通過某些行為(點擊、移動或滾動)觸發頁面進行大面積繪製的時候,瀏覽器往往是沒有準備的,只能被動使用CPU去計算與重繪,由於沒有事先準備,應付渲染夠嗆,於是掉幀卡頓。而CSS屬性will change為web開發者提供了一種告知瀏覽器該元素會有哪些變化的方法,這 ...
  • 最近的計劃,就是每天來幾個特效,當然這裡有限制,在什麼候選區只能放一個,還每天有限制發佈的,哎, 啊 終於寫完了,看到一個挺好玩的東西,想到能不能用網頁的特效做出來,試試唄!不過,一想肯東有很多的 相類似的了,不過,反正就是挺有成就感的。高興即來淫詩一首,兩眼黑黑,燈下黑黑,嘿嘿嘿嘿嘿嘿嘿嘿。。。 ...
  • 一、set 1.基本用法 2.Set實例的屬性 3.Set實例的方法 4.遍歷操作 二、WeakSet 三、Map結構的目的和基本用法 實例的屬性和操作方法 遍歷方法 Map結構轉為數組結構,比較快速的方法是結合使用擴展運算符(...)。 四、WeakMap WeakMap與Map在API上的區別主 ...
  • 在一年前初學js的時候,看過很多關於非同步編程的講解。但是由於實踐經驗少,沒有辦法理解的太多,太理論的東西也往往是看完就忘。 經過公司的三兩個項目的鍛煉,終於對js非同步編程有了比較具體的理解。但始終入門較淺,在這裡就當是給自己一個階段性的總結。 在非同步編程中,一條語句的執行不能依賴上一條語句執行完畢的... ...
  • /** * 第一種Ajax提交方式 * 這種方式需要直接使用ext Ajax方法進行提交 * 使用這種方式,需要將待傳遞的參數進行封裝 * @return entitySearch.firstname:document.all.firstname.value, */function saveUser ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...