当前位置:首页 > JavaScript

js手动实现getelementbyid

2026-03-15 16:05:38JavaScript

手动实现 getElementById 的方法

递归遍历 DOM 树

通过递归遍历 DOM 树的每个节点,检查节点的 id 属性是否匹配目标值。如果找到匹配的节点,立即返回该节点;否则继续遍历子节点。

js手动实现getelementbyid

function getElementById(root, id) {
  if (root.id === id) {
    return root;
  }

  for (let child of root.children) {
    const found = getElementById(child, id);
    if (found) {
      return found;
    }
  }

  return null;
}

使用 BFS(广度优先搜索)

采用队列实现广度优先搜索,逐层遍历 DOM 树,直到找到目标节点。

js手动实现getelementbyid

function getElementById(root, id) {
  const queue = [root];

  while (queue.length > 0) {
    const node = queue.shift();
    if (node.id === id) {
      return node;
    }

    for (let child of node.children) {
      queue.push(child);
    }
  }

  return null;
}

使用 DFS(深度优先搜索)的非递归实现

通过栈实现深度优先搜索的非递归版本,避免递归可能导致的堆栈溢出问题。

function getElementById(root, id) {
  const stack = [root];

  while (stack.length > 0) {
    const node = stack.pop();
    if (node.id === id) {
      return node;
    }

    for (let i = node.children.length - 1; i >= 0; i--) {
      stack.push(node.children[i]);
    }
  }

  return null;
}

注意事项

  1. 性能考虑:递归实现可能在 DOM 树很深时导致堆栈溢出,非递归的 BFS 或 DFS 更安全。
  2. 兼容性:手动实现通常用于理解原理,实际开发中应优先使用原生 document.getElementById
  3. 扩展性:可以进一步优化算法,例如支持动态加载的 DOM 节点。

示例调用

const rootElement = document.documentElement;
const targetElement = getElementById(rootElement, 'myId');
console.log(targetElement);

分享给朋友:

相关文章

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…