JavaScript實(shí)現(xiàn)燈光閃爍效果
在 JS中,我們可以實(shí)現(xiàn)燈光閃爍效果,這里主要用 setInterval 和 clearInterval 兩個(gè)重要方法。
效果圖
源代碼
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>燈閃爍效果</title> <style> #light { width: 100px; height: 100px; background-color: gray; margin: 20px; border-radius:50%; } .dd{ width: 150px; height: 200px; margin:30px auto; } </style> </head> <body> <div class="dd"> <div id="light"></div> <button onclick="startFlashing()">開啟閃爍</button> <button onclick="stopFlashing()">關(guān)閉閃爍</button> </div> <script> let flashingInterval; function startFlashing() { if (!flashingInterval) { // 防止重復(fù)啟動(dòng) flashingInterval = setInterval(toggleLight, 500); // 每500毫秒切換一次 } } function stopFlashing() { clearInterval(flashingInterval); flashingInterval = null; document.getElementById('light').style.backgroundColor = 'gray'; // 停止時(shí)設(shè)置為灰色 } function toggleLight() { const lightElement = document.getElementById('light'); if (lightElement.style.backgroundColor === 'gray') { lightElement.style.backgroundColor = 'yellow'; // 切換到亮的狀態(tài) } else { lightElement.style.backgroundColor = 'gray'; // 切換到暗的狀態(tài) } } </script> </body> </html>
setInterval,clearInterval 解釋
setInterval
setInterval 方法允許你設(shè)定一個(gè)定時(shí)器,該定時(shí)器會(huì)按照指定的時(shí)間間隔(以毫秒為單位)重復(fù)調(diào)用一個(gè)函數(shù)或執(zhí)行一段代碼。它非常適合用于需要周期性更新的任務(wù),如動(dòng)畫、輪詢服務(wù)器數(shù)據(jù)等。
語(yǔ)法:
var intervalID = setInterval(func, delay, param1, param2, ...); // 或者 var intervalID = setInterval(code, delay);
- func 是要重復(fù)執(zhí)行的函數(shù)。
- code 是一個(gè)字符串形式的可執(zhí)行代碼(不推薦使用,因?yàn)樗邪踩L(fēng)險(xiǎn))。
- delay 是兩次調(diào)用之間的時(shí)間間隔,以毫秒為單位(注意,實(shí)際延遲可能因系統(tǒng)或其他因素而有所不同)。
- param1, param2, ... 是傳遞給 func 函數(shù)的參數(shù)列表(某些舊版瀏覽器不支持此特性)。
- intervalID 是返回的一個(gè)唯一的 ID 標(biāo)識(shí)符,可以用來取消定時(shí)器。
示例:
function sayHello() { console.log('Hello'); } var intervalId = setInterval(sayHello, 3000); // 每3秒打印一次 'Hello'
clearInterval
一旦設(shè)置了定時(shí)器,如果你希望提前停止它,可以使用 clearInterval 方法。這個(gè)方法接收一個(gè)由 setInterval 返回的定時(shí)器 ID,并停止對(duì)應(yīng)的定時(shí)任務(wù)。
語(yǔ)法:
clearInterval(intervalID);
intervalID 是通過 setInterval 方法獲得的定時(shí)器 ID。
示例:
var intervalId = setInterval(sayHello, 3000); // 假設(shè)在某個(gè)條件下停止定時(shí)器 setTimeout(function() { clearInterval(intervalId); // 停止定時(shí)器 }, 10000); // 在10秒后停止定時(shí)器
注意事項(xiàng)
setInterval 的回調(diào)函數(shù)是在全局作用域中執(zhí)行的,這意味著它的 this 關(guān)鍵字將指向全局對(duì)象(通常是 window 對(duì)象)。如果需要保持當(dāng)前作用域,可以使用箭頭函數(shù)或 bind() 方法。
如果 delay 設(shè)置得太短,可能會(huì)導(dǎo)致性能問題,尤其是在低性能設(shè)備上運(yùn)行時(shí)。此外,瀏覽器通常會(huì)有最小延遲限制(通常為4毫秒左右),即使你設(shè)置的值小于這個(gè)限制,也會(huì)被調(diào)整到最小延遲。
當(dāng)頁(yè)面卸載時(shí),所有的定時(shí)器都會(huì)自動(dòng)清除,所以不需要手動(dòng)去清理這些定時(shí)器。
到此這篇關(guān)于JavaScript實(shí)現(xiàn)燈光閃爍效果的文章就介紹到這了,更多相關(guān)JavaScript閃爍效果內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js和jquery分別驗(yàn)證單選框、復(fù)選框、下拉框
這篇文章主要為大家詳細(xì)介紹了js和jquery分別驗(yàn)證單選框、復(fù)選框、下拉框的具體代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-12-12html5 canvas js(數(shù)字時(shí)鐘)實(shí)例代碼
這篇文章主要介紹了html5 canvas js(數(shù)字時(shí)鐘)實(shí)例代碼,有需要的朋友可以參考一下2013-12-12js trim函數(shù) 去空格函數(shù)與正則集錦
在javascript中處理文本框輸入值的時(shí)候,經(jīng)常要用到"去掉前后空白"的功能。用過jQuery的朋友都知道,jQuery提供了一個(gè)trim()這樣的功能函數(shù),可以很輕松幫我們實(shí)現(xiàn)這樣的效果。2009-11-11JavaScript動(dòng)態(tài)創(chuàng)建二維數(shù)組的方法示例
這篇文章主要介紹了JavaScript動(dòng)態(tài)創(chuàng)建二維數(shù)組的方法,結(jié)合實(shí)例形式分析了javascript動(dòng)態(tài)創(chuàng)建二維數(shù)組的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-02-02ES6中Set和Map數(shù)據(jù)結(jié)構(gòu),Map與其它數(shù)據(jù)結(jié)構(gòu)互相轉(zhuǎn)換操作實(shí)例詳解
這篇文章主要介紹了ES6中Set和Map數(shù)據(jù)結(jié)構(gòu),Map與其它數(shù)據(jù)結(jié)構(gòu)互相轉(zhuǎn)換操作,結(jié)合實(shí)例形式詳細(xì)分析了ES6中的Set和Map數(shù)據(jù)結(jié)構(gòu)的概念、原理、遍歷、去重等操作,以及Map與其它數(shù)據(jù)結(jié)構(gòu)互相轉(zhuǎn)換操作,需要的朋友可以參考下2019-02-02如何通過vscode運(yùn)行調(diào)試javascript代碼
這篇文章主要介紹了如何通過vscode運(yùn)行調(diào)試javascript代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07js結(jié)合正則實(shí)現(xiàn)國(guó)內(nèi)手機(jī)號(hào)段校驗(yàn)
這篇文章主要介紹了js結(jié)合正則實(shí)現(xiàn)國(guó)內(nèi)手機(jī)號(hào)段校驗(yàn)的方法以及使用js和jQuery實(shí)現(xiàn)的簡(jiǎn)單校驗(yàn)手機(jī)號(hào)的示例,非常簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。2015-06-06