解析如何利用iframe標(biāo)簽以及js制作時(shí)鐘
如何制作一個(gè)時(shí)鐘呢?效果如下圖所示:
這里的時(shí)鐘會(huì)不停的走,但是下面的頁(yè)面是不會(huì)變得,這樣就實(shí)現(xiàn)了我們想要的效果了。下面我將分為以下幾個(gè)方面來(lái)講:
- javascript中的Date引用類(lèi)型
- 幾種效果不佳的實(shí)例
- <iframe>標(biāo)簽
- 最終效果不錯(cuò)的實(shí)例
如果大家想直接看最終不錯(cuò)的效果實(shí)例,可以看文章結(jié)尾處代碼。
第一部分:Date引用類(lèi)型
1.日期對(duì)象可以直接使用new操作符和Date構(gòu)造函數(shù)構(gòu)造。代碼如下:
var date=new Date();
2. 通過(guò)構(gòu)造函數(shù)直接得到的date對(duì)象的時(shí)間是當(dāng)前的時(shí)間。由于Date類(lèi)型使用自UTC(Coordinated Universal Time,國(guó)際協(xié)調(diào)時(shí)間)1970年1月1日午夜至改日期經(jīng)過(guò)的毫秒數(shù)。所以如果直接輸出,按道理來(lái)說(shuō)會(huì)出現(xiàn)一個(gè)很大的數(shù)字。但是因?yàn)镈ate引用類(lèi)型是繼承了Object引用類(lèi)型的,同時(shí)也就繼承了Object的toString()方法。故直接輸出時(shí),它會(huì)默認(rèn)使用toString()方法。
var date=new Date; console.log(date);// Mon Oct 31 2016 23:29:07 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)<br>console.log(date.toString());//Mon Oct 31 2016 23:29:07 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
3.如果我們使用valueOf()方法(同樣也是繼承自O(shè)bject()引用類(lèi)型),就可以得到歷經(jīng)的毫秒數(shù)了。
var date=new Date(); console.log(date.valueOf());//1477927747916 1477927747916毫秒算下來(lái)剛好是46年多。
4.同時(shí),Date還有一個(gè)toLocaleString()方法,該方法會(huì)將毫秒表示的時(shí)間轉(zhuǎn)化為當(dāng)?shù)氐淖址硎镜臅r(shí)間,如下所示:
var date=new Date(); console.log(date.toLocaleString());//2016/10/31 下午11:29:07
5.但是如果我們不想使用當(dāng)前時(shí)間而希望使用自定義的時(shí)間呢? Date類(lèi)型為我們提供了兩種方法,分別具有不同的初始化方式。
var time=new Date(Date.parse("October 31,2016")); console.log(time);//Mon Oct 31 2016 00:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) var Time=new Date("October 31,2016"); console.log(Time);//Mon Oct 31 2016 00:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) var dateTime=new Date(Date.UTC(2016,9,31,23,26,50)); console.log(dateTime);//這是一個(gè)bug Tue Nov 01 2016 07:26:50 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) var Timedate=new Date(2016,9,31,23,26,50); console.log(Timedate);//Mon Oct 31 2016 23:26:50 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
即這兩個(gè)方法分別是在構(gòu)造函數(shù)時(shí)初始化,一個(gè)是Date.parse(),如果輸入的格式正確,我們甚至省略之。另外一個(gè)是Date.UTC,這里傳入了六個(gè)參數(shù),分別是 年 月 日 時(shí) 分 秒 ,同樣是可以省略不寫(xiě)。這里值得注意的是:
- “月”是從0開(kāi)始計(jì)算的,即2月但是要輸入1,10月要輸入9......
- “時(shí)”必須使用24小時(shí)的方法來(lái)計(jì)算。
但是這里有一個(gè)bug,即當(dāng)我們使用var dateTime=new Date(Date.UTC(2016,9,31,23,26,50));傳入的數(shù)字是9,應(yīng)該得到10月份,卻得到了11月份,這時(shí)我們可以采用其他方法來(lái)替換之。
第二部分:幾種效果不佳的實(shí)例
ok!已經(jīng)知道了如何創(chuàng)建時(shí)間對(duì)象,這時(shí)候,我們就可以使用它來(lái)做時(shí)鐘了。但是,以下幾種方法創(chuàng)建時(shí)鐘是不合適的。
A. 使用javascript定時(shí)器外加meta標(biāo)簽中的自動(dòng)刷新功能。
代碼如下圖所示:
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="refresh" content="2"> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="time"></div> <script> var date=new Date(); var time=document.getElementById("time"); setInterval(function(){ time.innerHTML=date.toLocaleString(); },1); </script> </body> </html>
如果你嘗試以下發(fā)現(xiàn)確實(shí)可以達(dá)到類(lèi)似的效果,但是你應(yīng)該注意到這時(shí)我們?cè)赿iv元素中沒(méi)有插入任何內(nèi)容,一旦插入內(nèi)容,就會(huì)發(fā)現(xiàn)得不到我們想要的效果了,因此這種方式不可取。
B 使用javascript定時(shí)器外加window.location.reload()函數(shù),使頁(yè)面不斷刷新。代碼如下所示:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="time"></div> <script> var date=new Date(); var time=document.getElementById("time"); function reload(){ window.location.reload(); } setInterval(function(){ reload(); },1000); setInterval(function(){ time.innerHTML=date.toLocaleString(); },1000); </script> </body> </html>
毫無(wú)疑問(wèn),這種方法也會(huì)導(dǎo)致頁(yè)面不斷刷新,在div中加入一些文字或者圖片就可以看出來(lái)。
C.使用javascript以及dom方法實(shí)現(xiàn)。
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="refresh" content="2"> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="time"><img src="時(shí)鐘.jpg"/>我是桌面上的時(shí)鐘,哈哈</div> <div id="bottom"> </div> <script> var date=Date.now(); var time=document.getElementById("time"); var para=document.createElement("p"); time.appendChild(para); setInterval(function(){ para.innerHTML=date.toLocaleString(); },1000); </script> </body> </html>
即我們?cè)赿iv中只創(chuàng)建一個(gè)p,把時(shí)鐘放到p中去,動(dòng)態(tài)的刷新p,并且這是你可以添加文字或者圖片,發(fā)現(xiàn)都不會(huì)有影響。這就大功告成了嗎?如果你嘗試這在div中插入一個(gè)視頻,就會(huì)發(fā)現(xiàn),視頻會(huì)在你規(guī)定的時(shí)間不斷刷新,播放不了,因此圖片和文字看不出來(lái),是因?yàn)槲覀內(nèi)庋蹧](méi)法分辨,因此,這種方法也不可取。
注:插入視頻可以如下:
<embed align="center" src="告白氣球.mp4" type="audio/mpeg" width="1002" autostart="false" controls="controls" height="500" ></embed>
當(dāng)然,這只是其中一種方法,html5中還有其他方法,大家可以學(xué)習(xí)。
第三部分:<iframe>標(biāo)簽
<iframe>標(biāo)簽規(guī)定了一個(gè)內(nèi)聯(lián)框架,它可以用來(lái)在當(dāng)前html文檔中嵌入另外一個(gè)文檔。
在iframe標(biāo)簽中有一些屬性,比較常用的就是height width ,這兩個(gè)屬性可以規(guī)定這個(gè)內(nèi)聯(lián)框架的高度和寬度。name屬性可以規(guī)定<iframe>的名稱(chēng)。src屬性用于規(guī)定在<iframe>中顯示的文檔的url。scrolling屬性有yes no auto 三種屬性值,它規(guī)定是否在<iframe>中顯示滾動(dòng)條。
第四部分:最終效果不錯(cuò)的實(shí)例
從第三部分可知,如果我們能使用iframe標(biāo)簽引入一個(gè)外部的文檔,就可以解決所有的問(wèn)題了,因?yàn)槊慨?dāng)刷新時(shí),只會(huì)刷新在iframe里面的內(nèi)容。代碼如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <iframe src="test.html" width="200" height="30" seamless="seamless" scrolling="no" ></iframe> <p>我是頁(yè)面上的時(shí)鐘,哈哈</a> </body> </html>
以下是test.html中的代碼
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="time"></div> <script> var date=new Date(); var time=document.getElementById("time"); function reload(){ window.location.reload(); } setInterval(function(){ reload(); },1000); setInterval(function(){ time.innerHTML=date.toLocaleString(); },1000); </script> </body> </html>
OK!成功解決問(wèn)題!效果圖如下:
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
- js+css3制作時(shí)鐘特效
- js Canvas實(shí)現(xiàn)圓形時(shí)鐘教程
- 又一款js時(shí)鐘!transform實(shí)現(xiàn)時(shí)鐘效果
- JavaScript學(xué)習(xí)小結(jié)之使用canvas畫(huà)“哆啦A夢(mèng)”時(shí)鐘
- JS+Canvas繪制時(shí)鐘效果
- 純js代碼制作的網(wǎng)頁(yè)時(shí)鐘特效【附實(shí)例】
- JS 實(shí)現(xiàn)倒計(jì)時(shí)數(shù)字時(shí)鐘效果【附實(shí)例代碼】
- JavaScript html5 canvas繪制時(shí)鐘效果(二)
- 基于javascript實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘效果
- 簡(jiǎn)單的JS時(shí)鐘實(shí)例講解
- JavaScript中關(guān)于iframe滾動(dòng)條的去除和保留
- javascript iframe跨域詳解
相關(guān)文章
基于JavaScript實(shí)現(xiàn)文件共享型網(wǎng)站
Any?Share?是一種簡(jiǎn)單、輕量、快速的文件共享服務(wù)。使用?Javascript?編寫(xiě),并搭建在?Firebase?平臺(tái)。本文將利用它實(shí)現(xiàn)創(chuàng)建文件共享型網(wǎng)站,感興趣的可以了解一下2022-11-11JS定時(shí)檢測(cè)任務(wù)任務(wù)完成后執(zhí)行下一步的解決辦法
這篇文章主要介紹了JS定時(shí)檢測(cè)任務(wù)任務(wù)完成后執(zhí)行下一步的解決辦法,需要的朋友可以參考下2016-12-12微信小程序清空輸入框信息與實(shí)現(xiàn)屏幕往上滾動(dòng)的示例代碼
這篇文章主要介紹了微信小程序清空輸入框信息與實(shí)現(xiàn)屏幕往上滾動(dòng)的示例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06簡(jiǎn)單實(shí)現(xiàn)JavaScript彈幕效果
這篇文章主要幫助大家簡(jiǎn)單實(shí)現(xiàn)JavaScript彈幕效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05Vue2.0+ElementUI實(shí)現(xiàn)表格翻頁(yè)的實(shí)例
下面小編就為大家?guī)?lái)一篇Vue2.0+ElementUI實(shí)現(xiàn)表格翻頁(yè)的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10javascript實(shí)現(xiàn)iframe框架延時(shí)加載的方法
這篇文章主要介紹了javascript實(shí)現(xiàn)iframe框架延時(shí)加載的方法,可基于setTimeout實(shí)現(xiàn)這一功能,是非常實(shí)用的技巧,需要的朋友可以參考下2014-10-10Javascript自定義排序 node運(yùn)行 實(shí)例
Javascript自定義排序 node運(yùn)行 實(shí)例,需要的朋友可以參考一下2013-06-06自己使用js/jquery寫(xiě)的一個(gè)定制對(duì)話框控件
自己做一個(gè)通用的控件,雖然不是絕對(duì)通用啦,但在我這個(gè)項(xiàng)目里還是可以隨意調(diào)用的,思想的話也可以借鑒到別的項(xiàng)目中2014-05-05