JS實(shí)現(xiàn)給不同元素設(shè)置不同的定時(shí)器
本文實(shí)例為大家分享了JS實(shí)現(xiàn)給不同元素設(shè)置不同的定時(shí)器,供大家參考,具體內(nèi)容如下
案例效果:
上面的紫色盒子打開(kāi)頁(yè)面會(huì)自己移動(dòng)到300px,點(diǎn)擊上面的按鈕,粉色的span才會(huì)移動(dòng),并且移動(dòng)到200px。
注意:需要給定時(shí)器單獨(dú)命名,如果都寫(xiě)在同一個(gè)封裝函數(shù)里面的話,每次都會(huì)開(kāi)辟一個(gè)定時(shí)器的空間,這樣就會(huì)造成資源浪費(fèi),所以直接采用給對(duì)象添加定時(shí)器屬性的方式來(lái)節(jié)約空間。同時(shí)要注意,在設(shè)置定時(shí)器之前要清除掉這個(gè)對(duì)象的定時(shí)器屬性,因?yàn)槿绻磺宄脑?,?dāng)連續(xù)按下按鈕的時(shí)候就會(huì)又開(kāi)啟一個(gè)定時(shí)器這樣下面那個(gè)span就會(huì)越跑越快。
完整代碼如下:
<!DOCTYPE html> <html lang="en"> ? <head> ? ? <meta charset="UTF-8"> ? ? <meta http-equiv="X-UA-Compatible" content="IE=edge"> ? ? <meta name="viewport" content="width=device-width, initial-scale=1.0"> ? ? <title>Document</title> ? ? <style> ? ? ? ? div { ? ? ? ? ? ? position: absolute; ? ? ? ? ? ? left: 0; ? ? ? ? ? ? top: 50px; ? ? ? ? ? ? width: 200px; ? ? ? ? ? ? height: 200px; ? ? ? ? ? ? background-color: violet; ? ? ? ? } ? ? ? ?? ? ? ? ? span { ? ? ? ? ? ? position: absolute; ? ? ? ? ? ? left: 0; ? ? ? ? ? ? top: 270px; ? ? ? ? ? ? display: block; ? ? ? ? ? ? width: 300px; ? ? ? ? ? ? height: 300px; ? ? ? ? ? ? background-color: pink; ? ? ? ? } ? ? </style> ? </head> ? <body> ? ? <button>點(diǎn)擊這個(gè)按鈕span才移動(dòng)</button> ? ? <div></div> ? ? <span>sy is sy</span> ? ? <script> ? ? ? ? // 動(dòng)畫(huà)函數(shù) ? ? ? ? // obj代表是哪個(gè)對(duì)象,target代表移動(dòng)的距離 ? ? ? ? function move(obj, target) { ? ? ? ? ? ? // 當(dāng)我們不斷的點(diǎn)擊按鈕,這個(gè)元素的速度會(huì)越來(lái)越快,因?yàn)殚_(kāi)啟了太多的定時(shí)器 ? ? ? ? ? ? // 解決方案就是 讓我們?cè)刂挥幸粋€(gè)定時(shí)器執(zhí)行 ? ? ? ? ? ? // 先清除以前的定時(shí)器,只保留當(dāng)前的一個(gè)定時(shí)器執(zhí)行 ? ? ? ? ? ? clearInterval(obj.timer); ? ? ? ? ? ? obj.timer = window.setInterval(function() { ? ? ? ? ? ? ? ? if (obj.offsetLeft >= target) { ? ? ? ? ? ? ? ? ? ? window.clearInterval(obj.timer); ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? obj.style.left = obj.offsetLeft + 1 + 'px'; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? }, 30); ? ? ? ? } ? ? ? ? ? var div = document.querySelector('div') ? ? ? ? var span = document.querySelector('span') ? ? ? ? var btn = document.querySelector('button') ? ? ? ? move(div, 300); ? ? ? ? ? btn.addEventListener('click', function() { ? ? ? ? ? ? move(span, 200); ? ? ? ? }) ? ? </script> </body> ? </html>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javascript實(shí)現(xiàn)簡(jiǎn)單搜索功能
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)簡(jiǎn)單搜索功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03JavaScript自定義日期格式化函數(shù)詳細(xì)解析
下面的一個(gè)例子就是以獨(dú)立函數(shù)寫(xiě)出的JavaScript日期格式化函數(shù),獨(dú)立的format函數(shù)?;氐礁袷交倪@一知識(shí)點(diǎn)上,我們考查的是怎么實(shí)現(xiàn)的、運(yùn)用了哪些原理2014-01-01淺談Javascript中的函數(shù)、this以及原型
下面小編就為大家?guī)?lái)一篇淺談Javascript中的函數(shù)、this以及原型。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10JavaScript Canvas編寫(xiě)炫彩的網(wǎng)頁(yè)時(shí)鐘
這篇文章主要為大家詳細(xì)介紹了JavaScript Canvas編寫(xiě)炫彩的網(wǎng)頁(yè)時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10css和js實(shí)現(xiàn)彈出登錄居中界面完整代碼
這篇文章主要介紹了css和js實(shí)現(xiàn)彈出登錄居中界面,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11javascript中獲取class的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇javascript中獲取class的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07JavaScript實(shí)現(xiàn)頁(yè)面動(dòng)態(tài)驗(yàn)證碼的實(shí)現(xiàn)示例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)頁(yè)面動(dòng)態(tài)驗(yàn)證碼的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03