当前位置:首页 > JavaScript

js实现定时删除

2026-03-16 08:30:33JavaScript

使用 setTimeout 实现单次延迟删除

function deleteAfterDelay(elementId, delayMs) {
  setTimeout(() => {
    const element = document.getElementById(elementId);
    if (element) {
      element.remove();
    }
  }, delayMs);
}

调用方式:deleteAfterDelay('myElement', 5000) 将在5秒后删除ID为myElement的元素

js实现定时删除

使用 setInterval 实现定期清理

let cleanupInterval;

function startPeriodicCleanup(intervalMs) {
  cleanupInterval = setInterval(() => {
    const expiredElements = document.querySelectorAll('.expired');
    expiredElements.forEach(el => el.remove());
  }, intervalMs);
}

function stopPeriodicCleanup() {
  clearInterval(cleanupInterval);
}

基于时间戳的条件删除

function deleteExpiredElements() {
  const now = Date.now();
  document.querySelectorAll('[data-expiry]').forEach(el => {
    const expiryTime = parseInt(el.dataset.expiry);
    if (now >= expiryTime) {
      el.remove();
    }
  });
}

// 设置元素示例
// <div data-expiry="1735689600000">...</div>

结合 localStorage 的持久化定时删除

function scheduleDeletion(key, expiryMs) {
  const expiryTime = Date.now() + expiryMs;
  localStorage.setItem(`delete_${key}`, expiryTime.toString());

  window.addEventListener('load', checkExpiredItems);
}

function checkExpiredItems() {
  const now = Date.now();
  Object.keys(localStorage).forEach(key => {
    if (key.startsWith('delete_')) {
      const expiryTime = parseInt(localStorage.getItem(key));
      if (now >= expiryTime) {
        localStorage.removeItem(key);
        const elementKey = key.replace('delete_', '');
        document.getElementById(elementKey)?.remove();
      }
    }
  });
}

使用 requestAnimationFrame 实现动画结束删除

function deleteAfterAnimation(element, animationDuration) {
  element.style.animation = `fadeOut ${animationDuration}ms`;

  const onAnimationEnd = () => {
    element.remove();
    element.removeEventListener('animationend', onAnimationEnd);
  };

  element.addEventListener('animationend', onAnimationEnd);
}

使用 MutationObserver 监听变化后删除

function deleteWhenEmpty(element) {
  const observer = new MutationObserver(mutations => {
    if (element.children.length === 0) {
      element.remove();
      observer.disconnect();
    }
  });

  observer.observe(element, { childList: true });
}

使用 WeakRef 和 FinalizationRegistry 实现内存敏感删除

const registry = new FinalizationRegistry(id => {
  document.getElementById(id)?.remove();
});

function registerForAutoDeletion(elementId) {
  const element = document.getElementById(elementId);
  if (element) {
    registry.register(element, elementId);
  }
}

注意:FinalizationRegistry 的清理时机由垃圾回收决定,不适合精确时间控制

标签: js
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…