JS實(shí)現(xiàn)簡(jiǎn)單網(wǎng)頁(yè)倒計(jì)時(shí)器
制作一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)倒計(jì)時(shí)器(js原生代碼),供大家參考,具體內(nèi)容如下
實(shí)現(xiàn)一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)倒計(jì)時(shí)(距離xx年x月x日還剩多少時(shí)間),效果是這樣的
首先HTML代碼部分,我們需要簡(jiǎn)單編寫(xiě)一個(gè)html代碼,用來(lái)接收倒計(jì)時(shí)時(shí)間顯示。
<div id="box"></div>
接下來(lái)就是JS代碼部分。
首先要知道當(dāng)前的時(shí)間,然后還需要指定一個(gè)到期時(shí)間,拿到當(dāng)前時(shí)間和指定時(shí)間的時(shí)間差
function antitime() { ? ? var now = new Date(); //獲取當(dāng)前時(shí)間 ? ? var to = new Date(2032, 1, 1, 0, 0, 0); //指定到期時(shí)間 ? ? // 然后拿到當(dāng)前時(shí)間和指定時(shí)間的時(shí)間差,注意 是毫秒數(shù) ? ? var deltaTime = (to - now) / 1000; //到期時(shí)間和當(dāng)前時(shí)間相差的毫秒數(shù)/1000換算出總的秒數(shù),方便后邊用 ? ? // console.log(deltaTime)
判斷 如果時(shí)間超了,停止倒計(jì)時(shí)
if (deltaTime <= 0) { // 停止計(jì)時(shí)器 ?window.clearInterval(antitime); }
已知總的秒數(shù),計(jì)算天數(shù)時(shí)分秒
這里用到了取整數(shù)的方法,用到哪在哪除,并給其定義賦值,方便后面取用,用parseInt()取整或者M(jìn)ath.floor()取整,在這里用的是Math.floor()。
// 計(jì)算天數(shù)并給其賦值 ? ?var d = Math.floor(deltaTime / 3600 / 24), ? ? // 計(jì)算小時(shí)并給其賦值 ? ? h = Math.floor(deltaTime / 3600 % 24), ? ?// 計(jì)算分鐘并給其賦值 ? ? m = Math.floor(deltaTime / 60 % 60), ? ?// 計(jì)算秒數(shù)并給其賦值 ? s = Math.floor(deltaTime % 60);
實(shí)際上就是時(shí)間換算的基本運(yùn)算,這里看懂了也就簡(jiǎn)單多了,只需要封裝好函數(shù)就可以了。
為了增加用戶(hù)體驗(yàn),把時(shí)間的數(shù)字轉(zhuǎn)成字符串,如果分秒毫秒不足10,則前面補(bǔ)0。
這里應(yīng)該有更好的方法進(jìn)行封裝,為了更好理解,這樣寫(xiě)出來(lái)。
if (d < 10) { ? ? ? ? ? ? ? ? d = '0' + d; ? ? ? ? ? ? } else if (h < 10) { ? ? ? ? ? ? ? ? h = '0' + h; ? ? ? ? ? ? } else if (m < 10) { ? ? ? ? ? ? ? ? m = '0' + m; ? ? ? ? ? ? } else if (s < 10) { ? ? ? ? ? ? ? ? s = '0' + s; ? ? ? ? ? ? }
接下來(lái)就是需要定義一個(gè)空的字符串用來(lái)接收最后字符串拼接的值。
var timer01 = ''; ? timer01 = '距離2032年1月1日還有' + d + '天' + h + '小時(shí)' + m + '分' + s + '秒'; ? ? document.getElementById('box'); ? ? box.innerHTML = timer01;
document.getElementById() 獲取DOM元素節(jié)點(diǎn),方便向節(jié)點(diǎn)填入數(shù)據(jù)并顯示。
box.innerHTML = timer01 讓id擁有box屬性的元素節(jié)點(diǎn)在頁(yè)面顯示timer01中的內(nèi)容。
最后, 開(kāi)啟定時(shí)器,并讓其1000毫秒更新一次
setInterval(antitime, 1000);
總體JS部分代碼加上注釋給大家放這里了
<script> ? ? ? ? // ? ?指定計(jì)時(shí)器到期時(shí)間,首先先封裝函數(shù)antitime() ? ? ? ? function antitime() { ? ? ? ? ? ? var now = new Date(); //獲取當(dāng)前時(shí)間 ? ? ? ? ? ? var to = new Date(2032, 1, 1, 0, 0, 0); //指定到期時(shí)間 ? ? ? ? ? ? // 然后拿到當(dāng)前時(shí)間和指定時(shí)間的時(shí)間差,注意 是毫秒數(shù) ? ? ? ? ? ? var deltaTime = (to - now) / 1000; //到期時(shí)間和當(dāng)前時(shí)間相差的毫秒數(shù)/1000換算出總的秒數(shù),方便后邊用 ? ? ? ? ? ? // console.log(deltaTime) ? ? ? ? ? ? // 判斷 如果時(shí)間超了,停止倒計(jì)時(shí) ? ? ? ? ? ? if (deltaTime <= 0) { ? ? ? ? ? ? ? ? // 停止計(jì)時(shí)器 ? ? ? ? ? ? ? ? window.clearInterval(antitime); ? ? ? ? ? ? } ? ? ? ? ? ? // 已知毫秒數(shù),計(jì)算天數(shù)時(shí)分秒 ? ? ? ? ? ? // 這里用到了取整數(shù)的方法,用到哪在哪除,并給其定義賦值,方便后面取用, ? ? ? ? ? ? // 用parseInt()取整或者M(jìn)ath.floor()取整,在這里用的是Math.floor()。 ? ? ? ? ? ? // 計(jì)算天數(shù)并給其賦值 ? ? ? ? ? ? var d = Math.floor(deltaTime / 3600 / 24), ? ? ? ? ? ? ? ? // 計(jì)算小時(shí)并給其賦值 ? ? ? ? ? ? ? ? h = Math.floor(deltaTime / 3600 % 24), ? ? ? ? ? ? ? ? // 計(jì)算分鐘并給其賦值 ? ? ? ? ? ? ? ? m = Math.floor(deltaTime / 60 % 60), ? ? ? ? ? ? ? ? // 計(jì)算秒數(shù)并給其賦值 ? ? ? ? ? ? ? ? s = Math.floor(deltaTime % 60); ? ? ? ? ? ? //為了增加用戶(hù)體驗(yàn),把時(shí)間的數(shù)字轉(zhuǎn)成字符串,如果分秒毫秒不足10,則前面補(bǔ)0。 ? ? ? ? ? ? // 這里應(yīng)該有更好的方法進(jìn)行封裝,為了更好理解,這樣寫(xiě)出來(lái)。 ? ? ? ? ? ? if (d < 10) { ? ? ? ? ? ? ? ? d = '0' + d; ? ? ? ? ? ? } else if (h < 10) { ? ? ? ? ? ? ? ? h = '0' + h; ? ? ? ? ? ? } else if (m < 10) { ? ? ? ? ? ? ? ? m = '0' + m; ? ? ? ? ? ? } else if (s < 10) { ? ? ? ? ? ? ? ? s = '0' + s; ? ? ? ? ? ? } ? ? ? ? ? ? // 定義一個(gè)空的字符串用來(lái)接收最后的值 ? ? ? ? ? ? var timer01 = ''; ? ? ? ? ? ? timer01 = '距離2032年1月1日還有' + d + '天' + h + '小時(shí)' + m + '分' + s + '秒'; ? ? ? ? ? ? // document.getElementById() 獲取DOM元素節(jié)點(diǎn),方便向節(jié)點(diǎn)填入數(shù)據(jù)并顯示 ? ? ? ? ? ? document.getElementById('box'); ? ? ? ? ? ? // 讓id擁有box屬性的元素節(jié)點(diǎn)在頁(yè)面顯示timer01中的內(nèi)容 ? ? ? ? ? ? box.innerHTML = timer01; ? ? ? ? } ? ? ? ? // 開(kāi)啟定時(shí)器,并讓其1000毫秒更新一次 ? ? ? ? setInterval(antitime, 1000); </script>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js實(shí)現(xiàn)日期天數(shù)、時(shí)分秒的倒計(jì)時(shí)完整代碼
- JavaScript實(shí)現(xiàn)倒計(jì)時(shí)功能2種方法實(shí)例
- JavaScript倒計(jì)時(shí)定時(shí)器和間隔定時(shí)器使用詳解
- 一步步教你用js簡(jiǎn)單實(shí)現(xiàn)新年倒計(jì)時(shí)
- javascript實(shí)現(xiàn)倒計(jì)時(shí)小案例
- JavaScript實(shí)現(xiàn)簡(jiǎn)單的倒計(jì)時(shí)效果
- 用JS寫(xiě)了一個(gè)30分鐘倒計(jì)時(shí)器的實(shí)現(xiàn)示例
- JS利用時(shí)間戳倒計(jì)時(shí)的實(shí)現(xiàn)示例
相關(guān)文章
javascript設(shè)計(jì)模式之中介者模式學(xué)習(xí)筆記
這篇文章主要為大家詳細(xì)介紹了javascript設(shè)計(jì)模式之中介者模式學(xué)習(xí)筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02原創(chuàng)javascript小游戲?qū)崿F(xiàn)代碼
javascript小游戲?qū)崿F(xiàn)代碼,喜歡用javascript實(shí)現(xiàn)游戲效果代碼的朋友可以參考下。2010-08-08javascript中使用class和prototype的區(qū)別小結(jié)
本文將介紹在JavaScript何時(shí)使用class以及何時(shí)使用prototype,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08IE之動(dòng)態(tài)添加DOM節(jié)點(diǎn)觸發(fā)window.resize事件
因?yàn)轫?yè)面很多UI是絕對(duì)定位的,所以當(dāng)窗口大小改變的時(shí)候會(huì)使原先的布局混亂,只好在每次window.resize的時(shí)候重新布局...2010-07-07奇偶行高亮顯示及鼠標(biāo)劃過(guò)高亮顯示類(lèi)
奇或偶數(shù)行高亮顯示及鼠標(biāo)莫過(guò)高亮顯示,一個(gè)經(jīng)常用到的效果,也能谷歌到大把的這種效果JS,但好像還沒(méi)有一個(gè)封裝成類(lèi)直接用的.想象自己當(dāng)初谷歌這個(gè)類(lèi)時(shí),還真沒(méi)少折騰時(shí)間.2010-07-07JavaScript如何向頁(yè)面中添加一個(gè)按鈕
這篇文章主要介紹了JavaScript如何向頁(yè)面中添加一個(gè)按鈕,使用兩種方式向頁(yè)面中添加一個(gè)按鈕,分別是appendChild()和innerHTML屬性,本文結(jié)合示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10JavaScript實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02javascript使用數(shù)組的push方法完成快速排序
排序的方法有很多,本節(jié)為大家介紹的是使用數(shù)組的push方法完成快速排序,當(dāng)然你也可以舉一反三2014-09-09微信小程序?qū)崿F(xiàn)MUI數(shù)字輸入框效果
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)MUI數(shù)字輸入框效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01