JS定時器用法分析【時鐘與菜單中的應(yīng)用】
本文實(shí)例分析了JS定時器用法。分享給大家供大家參考,具體如下:
開啟定時器:
setInterval 間隔型 //一旦啟動就不會停,重復(fù)執(zhí)行
setTimeout 延遲型 //只執(zhí)行一次
停止定時器:
clearInterval
clearTimeout
關(guān)閉定時器如果只是clearInterval()那會關(guān)掉所有的定時器,有時我們只需要關(guān)掉一個而已,所以要定義一個變量來存放定時器
var timer=null; btn1.onclick=function(){ timer=setInterval(函數(shù)名,1000); }; btn2.onclick=function(){ clearInterval(timer); };
例子1
時刻變化的時鐘,且數(shù)字是由圖片代替的
思路:
1.創(chuàng)建Date(日期)對象,獲取系統(tǒng)時間(注:獲取時間如果是一位數(shù),需要一個轉(zhuǎn)換成二位數(shù)的函數(shù))
2.將獲得的系統(tǒng)時間每一位數(shù)字賦給圖片地址的數(shù)字編號(charAt()方法,返回字符串指定位置的字符,所以需要一個for循環(huán)返回時分秒六位數(shù)字)
3.需要一個定時器讓它自動更新時間
function toDouble(num){ //一位數(shù)轉(zhuǎn)換成二位數(shù) if(num<10){ return '0'+num; }else{ return ''+num; } } window.onload=function(){ var oimg=document.getElementsByTagName('img'); var i; function updatetime(){ var odate=new Date(); var str=toDouble(odate.getHours())+toDouble(odate.getMinutes())+toDouble(odate.getSeconds()); for(i=0;i<oimg.length;i++){ oimg[i].src='images/'+str.charAt(i)+'.png'; } } setInterval(updatetime,1000); //定時器里面應(yīng)該放的是方法,而不是直接執(zhí)行函數(shù) updatetime(); //不執(zhí)行下函數(shù),會出現(xiàn)剛刷新頁面第一秒,時間是00時00分00秒 }
例子2
二級菜單
一級菜單和二級菜單間有縫隙,如果僅僅是移入一級菜單時二級顯示,移除時隱藏,那么移到縫隙間還是會顯示不出來(或者說來不及進(jìn)入二級菜單,二級菜單就沒了),所以需要一個定時器,在離開一級菜單時,不讓二級馬上消失,而是緩慢隱藏,然后在進(jìn)入二級菜單時,清除這個定時器,他就不會消失了,另外離開二級菜單時,還是要讓它消失,不然會永遠(yuǎn)存在
window.onload=function(){ var box1=document.getElementById('box1'); var box2=document.getElementById('box2'); var timer=null; box1.onmouseover=function(){ box2.style.display="block"; clearTimeout(timer); //不清除定時器,離開二級菜單進(jìn)入一級菜單時,二級菜單也會隱藏 }; box1.onmouseout=function(){ timer=setTimeout(function(){ box2.style.display="none"; },300); }; box2.onmouseover=function(){ clearTimeout(timer); }; box2.onmouseout=function(){ //如果離開二級菜單,讓他瞬間消失,IE7下移動到一級菜單時,二級菜單會閃爍 timer=setTimeout(function(){ box2.style.display="none"; },300); }; };
簡化下代碼
window.onload=function(){ var box1=document.getElementById('box1'); var box2=document.getElementById('box2'); var timer=null; box1.onmouseover=box2.onmouseover=function show(){ box2.style.display="block"; clearTimeout(timer); }; box1.onmouseout=box2.onmouseout=function hide(){ timer=setTimeout(function(){ box2.style.display="none"; },300); }; };
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript時間與日期操作技巧總結(jié)》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
- js原生之焦點(diǎn)圖轉(zhuǎn)換加定時器實(shí)例
- JavaScript定時器實(shí)現(xiàn)的原理分析
- javascript 定時器工作原理分析
- JavaScript實(shí)現(xiàn)頁面定時刷新(定時器,meta)
- JS Canvas定時器模擬動態(tài)加載動畫
- JavaScript暫停和繼續(xù)定時器的實(shí)現(xiàn)方法
- JS定時器使用,定時定點(diǎn),固定時刻,循環(huán)執(zhí)行詳解
- JavaScript 定時器 SetTimeout之定時刷新窗口和關(guān)閉窗口(代碼超簡單)
- javascript中SetInterval與setTimeout的定時器用法
- JavaScript定時器和優(yōu)化的取消定時器方法
- Javascript中setTimeOut和setInterval的定時器用法
- JavaScript學(xué)習(xí)筆記之定時器
相關(guān)文章
es6基礎(chǔ)學(xué)習(xí)之解構(gòu)賦值
解構(gòu)賦值語法是一個 Javascript 表達(dá)式,這使得可以將值從數(shù)組或?qū)傩詮膶ο筇崛〉讲煌淖兞恐小_@篇文章主要給大家介紹了關(guān)于es6基礎(chǔ)學(xué)習(xí)之解構(gòu)賦值的相關(guān)資料,需要的朋友可以參考下2018-12-12關(guān)于微信小程序?qū)崿F(xiàn)云支付那些事兒
我們在做小程序支付相關(guān)的開發(fā)時,總會遇到這些難題,下面這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)云支付那些事兒,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09BootStrap中Datetimepicker和uploadify插件應(yīng)用實(shí)例小結(jié)
這篇文章主要介紹了BootStrap中Datetimepicker和uploadify插件應(yīng)用實(shí)例小結(jié)的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-05-05JavaScript中alert的使用方法超詳細(xì)介紹
JS中的alert作用是在瀏覽器中彈出一個警告框,而使用alert有三種方式,不同的方式所呈現(xiàn)的效果也不相同,這篇文章主要給大家介紹了關(guān)于JavaScript中alert使用方法的相關(guān)資料,需要的朋友可以參考下2024-01-01瀏覽器環(huán)境下JavaScript腳本加載與執(zhí)行探析之動態(tài)腳本與Ajax腳本注入
這篇文章主要介紹了瀏覽器環(huán)境下JavaScript腳本加載與執(zhí)行探析之動態(tài)腳本與Ajax腳本注入 的相關(guān)資料,需要的朋友可以參考下2016-01-01