当前位置:首页 > 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实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现计算器

js实现计算器

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

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…