当前位置:首页 > JavaScript

js手动实现getelementbyid

2026-04-07 09:29:13JavaScript

手动实现 getElementById

在 JavaScript 中,可以通过递归或迭代的方式手动实现 getElementById 的功能。以下是两种常见的实现方法:

递归实现

递归方法会遍历 DOM 树的每个节点,检查其 id 是否匹配目标值。

function getElementByIdRecursive(node, id) {
    if (!node) return null;
    if (node.id === id) return node;

    for (let child of node.children) {
        const found = getElementByIdRecursive(child, id);
        if (found) return found;
    }
    return null;
}

// 使用方式
const element = getElementByIdRecursive(document.body, 'targetId');

迭代实现

迭代方法使用队列(广度优先搜索)或栈(深度优先搜索)遍历 DOM 树。

js手动实现getelementbyid

function getElementByIdIterative(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;
}

// 使用方式
const element = getElementByIdIterative(document.body, 'targetId');

注意事项

  • 递归方法可能在深度较大的 DOM 树中导致栈溢出。
  • 迭代方法通常更高效,适合大型 DOM 树。
  • 原生 document.getElementById 性能更高,手动实现主要用于学习目的。

分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js如何实现继承

js如何实现继承

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

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…