需求:頁面指定區域每 10 分鐘輸出一個 7 位隨機整數,不影響其他內容。
<div id="random-number"></div>
<script>
// 產生指定位數的隨機整數(首位不為 0)
function generateRandomNum(digits) {
let num = '';
for (let i = 0; i < digits; i++) {
const min = i === 0 ? 1 : 0;
const max = 9;
num += Math.floor(Math.random() * (max - min + 1) + min);
}
return num;
}
// 更新 DOM
function updateRandomNumber() {
const el = document.getElementById('random-number');
if (el) el.textContent = generateRandomNum(7);
}
// 每 10 分鐘執行一次 (10 * 60 * 1000 ms)
const timerId = setInterval(updateRandomNumber, 10 * 60 * 1000);
// 頁面卸載時清除定時器(防洩漏)
window.addEventListener('beforeunload', () => clearInterval(timerId));
</script>
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
updateRandomNumber(); // 進入視口時立即更新
}
});
});
observer.observe(document.getElementById('random-number'));
此模式適用於驗證碼倒數、股價輪詢、公告輪播等「定時局部更新」場景。