JS實現(xiàn)給不同元素設(shè)置不同的定時器
本文實例為大家分享了JS實現(xiàn)給不同元素設(shè)置不同的定時器,供大家參考,具體內(nèi)容如下
案例效果:
上面的紫色盒子打開頁面會自己移動到300px,點擊上面的按鈕,粉色的span才會移動,并且移動到200px。
注意:需要給定時器單獨命名,如果都寫在同一個封裝函數(shù)里面的話,每次都會開辟一個定時器的空間,這樣就會造成資源浪費,所以直接采用給對象添加定時器屬性的方式來節(jié)約空間。同時要注意,在設(shè)置定時器之前要清除掉這個對象的定時器屬性,因為如果不清除的話,當(dāng)連續(xù)按下按鈕的時候就會又開啟一個定時器這樣下面那個span就會越跑越快。
完整代碼如下:
<!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>點擊這個按鈕span才移動</button> ? ? <div></div> ? ? <span>sy is sy</span> ? ? <script> ? ? ? ? // 動畫函數(shù) ? ? ? ? // obj代表是哪個對象,target代表移動的距離 ? ? ? ? function move(obj, target) { ? ? ? ? ? ? // 當(dāng)我們不斷的點擊按鈕,這個元素的速度會越來越快,因為開啟了太多的定時器 ? ? ? ? ? ? // 解決方案就是 讓我們元素只有一個定時器執(zhí)行 ? ? ? ? ? ? // 先清除以前的定時器,只保留當(dāng)前的一個定時器執(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>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript自定義日期格式化函數(shù)詳細(xì)解析
下面的一個例子就是以獨立函數(shù)寫出的JavaScript日期格式化函數(shù),獨立的format函數(shù)?;氐礁袷交倪@一知識點上,我們考查的是怎么實現(xiàn)的、運用了哪些原理2014-01-01淺談Javascript中的函數(shù)、this以及原型
下面小編就為大家?guī)硪黄獪\談Javascript中的函數(shù)、this以及原型。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10JavaScript Canvas編寫炫彩的網(wǎng)頁時鐘
這篇文章主要為大家詳細(xì)介紹了JavaScript Canvas編寫炫彩的網(wǎng)頁時鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-10-10JavaScript實現(xiàn)頁面動態(tài)驗證碼的實現(xiàn)示例
這篇文章主要介紹了JavaScript實現(xiàn)頁面動態(tài)驗證碼的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03