前端手写代码面试题
目录

编写一个函数,将一个给定的 DOM 节点渲染成 HTML 字符串

· 约 3 分钟读完 · 第 58 / 125 章

推荐答案

本题详细解读

1. 函数功能

nodeToHTML 函数的作用是将一个给定的 DOM 节点渲染成 HTML 字符串。它可以处理元素节点和文本节点,并递归处理子节点。

2. 代码解析

  • 文本节点处理:如果传入的节点是文本节点(node.nodeType === Node.TEXT_NODE),则直接返回节点的文本内容(node.textContent)。

  • 非元素节点处理:如果传入的节点不是元素节点(node.nodeType !== Node.ELEMENT_NODE),则返回空字符串。

  • 元素节点处理:

    • 获取元素的标签名(node.tagName.toLowerCase()),并将其转换为小写。
    • 获取元素的所有属性(node.attributes),并将其转换为 name="value" 的字符串形式,然后拼接成一个字符串。
    • 递归处理元素的子节点(node.childNodes),并将子节点的 HTML 字符串拼接起来。
    • 最后将标签名、属性和子节点的 HTML 字符串拼接成一个完整的 HTML 元素字符串。

3. 使用示例

4. 注意事项

  • 该函数假设传入的节点是一个有效的 DOM 节点。如果传入的节点类型不支持(如注释节点、文档节点等),函数将返回空字符串。
  • 该函数不处理自闭合标签(如 <img>、<br> 等),如果需要处理自闭合标签,可以在函数中添加额外的逻辑。