JavaScript實現(xiàn)燈光閃爍效果
在 JS中,我們可以實現(xiàn)燈光閃爍效果,這里主要用 setInterval 和 clearInterval 兩個重要方法。
效果圖

源代碼
<!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()">關閉閃爍</button>
</div>
<script>
let flashingInterval;
function startFlashing() {
if (!flashingInterval) { // 防止重復啟動
flashingInterval = setInterval(toggleLight, 500); // 每500毫秒切換一次
}
}
function stopFlashing() {
clearInterval(flashingInterval);
flashingInterval = null;
document.getElementById('light').style.backgroundColor = 'gray'; // 停止時設置為灰色
}
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ù)或執(zhí)行一段代碼。它非常適合用于需要周期性更新的任務,如動畫、輪詢服務器數(shù)據(jù)等。
語法:
var intervalID = setInterval(func, delay, param1, param2, ...); // 或者 var intervalID = setInterval(code, delay);
- func 是要重復執(zhí)行的函數(shù)。
- code 是一個字符串形式的可執(zhí)行代碼(不推薦使用,因為它有安全風險)。
- delay 是兩次調用之間的時間間隔,以毫秒為單位(注意,實際延遲可能因系統(tǒng)或其他因素而有所不同)。
- param1, param2, ... 是傳遞給 func 函數(shù)的參數(shù)列表(某些舊版瀏覽器不支持此特性)。
- intervalID 是返回的一個唯一的 ID 標識符,可以用來取消定時器。
示例:
function sayHello() {
console.log('Hello');
}
var intervalId = setInterval(sayHello, 3000); // 每3秒打印一次 'Hello'
clearInterval
一旦設置了定時器,如果你希望提前停止它,可以使用 clearInterval 方法。這個方法接收一個由 setInterval 返回的定時器 ID,并停止對應的定時任務。
語法:
clearInterval(intervalID);
intervalID 是通過 setInterval 方法獲得的定時器 ID。
示例:
var intervalId = setInterval(sayHello, 3000);
// 假設在某個條件下停止定時器
setTimeout(function() {
clearInterval(intervalId); // 停止定時器
}, 10000); // 在10秒后停止定時器
注意事項
setInterval 的回調函數(shù)是在全局作用域中執(zhí)行的,這意味著它的 this 關鍵字將指向全局對象(通常是 window 對象)。如果需要保持當前作用域,可以使用箭頭函數(shù)或 bind() 方法。
如果 delay 設置得太短,可能會導致性能問題,尤其是在低性能設備上運行時。此外,瀏覽器通常會有最小延遲限制(通常為4毫秒左右),即使你設置的值小于這個限制,也會被調整到最小延遲。
當頁面卸載時,所有的定時器都會自動清除,所以不需要手動去清理這些定時器。
到此這篇關于JavaScript實現(xiàn)燈光閃爍效果的文章就介紹到這了,更多相關JavaScript閃爍效果內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
全面解析JavaScript中時間格式化API實戰(zhàn)指南
時間與日期,是前端開發(fā)中最容易“踩坑”的部分,本文將系統(tǒng)解析 JavaScript 提供的時間格式化方法,幫你徹底搞懂它們的差異、用途與正確使用方式2025-11-11
Javascript獲取當前時間函數(shù)和時間操作小結
這篇文章主要介紹了Javascript獲取當前時間函數(shù)和時間操作小結,本文根據(jù)項目實際需求總結而來,需要的朋友可以參考下2014-10-10
基于Axios將網(wǎng)絡圖片地址轉換為File對象的實現(xiàn)方法
前端開發(fā)中,我們經(jīng)常需要將一個遠程圖片 URL 轉換為 File 對象,例如用于圖片上傳、表單提交、圖片裁剪等場景,本文將詳細介紹如何借助 Axios 實現(xiàn)這一需求,需要的朋友可以參考下2026-04-04

