jss html5-node.nodeType 属性用于表示节点的类型

在 JavaScript 中,node.nodeType 属性用于表示节点的类型。当 node.nodeType === Node.ELEMENT_NODE 时,表示该节点是一个元素节点(Element Node)。元素节点是 DOM 树中最常见的节点类型之一,用于表示 HTML 或 XML 文档中的元素。

以下是 node.nodeType 可能的值及其对应的节点类型:

表格

复制

nodeType 节点类型 描述
1 Node.ELEMENT_NODE 表示一个元素节点,例如 <div><img> 等。
2 Node.ATTRIBUTE_NODE 表示一个属性节点,例如 id="myId"
3 Node.TEXT_NODE 表示一个文本节点,例如元素中的文本内容。
4 Node.CDATA_SECTION_NODE 表示一个 CDATA 节点,用于包含不应由 XML 解析器解析的文本。
5 Node.ENTITY_REFERENCE_NODE 表示一个实体引用节点,例如 &copy;
6 Node.ENTITY_NODE 表示一个实体节点,很少在 DOM 中使用。
7 Node.PROCESSING_INSTRUCTION_NODE 表示一个处理指令节点,例如 <?xml-stylesheet type="text/xsl" href="style.xsl"?>
8 Node.COMMENT_NODE 表示一个注释节点,例如 <!-- This is a comment -->
9 Node.DOCUMENT_NODE 表示一个文档节点,例如整个 HTML 文档。
10 Node.DOCUMENT_TYPE_NODE 表示一个文档类型节点,例如 <!DOCTYPE html>
11 Node.DOCUMENT_FRAGMENT_NODE 表示一个文档片段节点,用于临时存储节点集合。

在你的代码中,node.nodeType === Node.ELEMENT_NODE 检查的是元素节点(Node.ELEMENT_NODE),其值为 1。这表示该节点是一个 HTML 元素,例如 <div><img><p> 等。

如果你需要遍历 editor 的所有子节点,并根据节点类型进行不同的处理,可以参考以下代码示例:

JavaScript

复制

复制代码
const editor = document.getElementById('editor');
let AllTxt = '';
const childNodes = editor.childNodes;

childNodes.forEach(node => {
    if (node.nodeType === Node.ELEMENT_NODE) {
        // 处理元素节点
        console.log(`Element: ${node.tagName}`);
        // 你可以根据元素类型进行进一步处理
        if (node.tagName === 'IMG') {
            // 处理图片元素
            const src = node.getAttribute('src') || '';
            AllTxt += `<img src='${src}' style='max-width:100%; max-height:500px;'>`;
        } else if (node.tagName === 'U') {
            // 处理下划线元素
            const textContent = node.textContent || '';
            AllTxt += `&lt;u&gt;${textContent}&lt;/u&gt;`;
        } else {
            // 处理其他元素
            AllTxt += node.outerHTML;
        }
    } else if (node.nodeType === Node.TEXT_NODE) {
        // 处理文本节点
        AllTxt += node.textContent;
    } else if (node.nodeType === Node.COMMENT_NODE) {
        // 处理注释节点
        AllTxt += `<!--${node.textContent}-->`;
    } else {
        // 其他类型的节点
        AllTxt += node.nodeValue || '';
    }
});

console.log(AllTxt);

代码说明:

  1. 遍历子节点

    • 使用 childNodes 获取 editor 的所有子节点。

    • 遍历每个子节点,根据 node.nodeType 判断节点类型。

  2. 处理不同类型的节点

    • 元素节点(Node.ELEMENT_NODE :根据元素类型(如 <img><u>)进行处理。

    • 文本节点(Node.TEXT_NODE:直接获取文本内容。

    • 注释节点(Node.COMMENT_NODE:处理注释内容。

    • 其他类型的节点:根据需要处理其他类型的节点。

  3. 最终结果

    • 将处理后的文本内容存储在 AllTxt 中,你可以将其输出或保存为文件。

这样,你可以根据节点类型进行不同的处理,最终生成符合需求的文本内容。

相关推荐
不爱吃饭爱吃菜25 分钟前
uniapp微信小程序一键授权登录
前端·javascript·vue.js·微信小程序·uni-app
90后小陈老师1 小时前
3D个人简历网站 5.天空、鸟、飞机
前端·javascript·3d
不爱吃糖的程序媛5 小时前
浅谈前端架构设计与工程化
前端·前端架构设计
郝YH是人间理想7 小时前
系统架构设计师案例分析题——web篇
前端·软件工程
Evaporator Core7 小时前
深入探索:Core Web Vitals 进阶优化与新兴指标
前端·windows
初遇你时动了情7 小时前
html js 原生实现web组件、web公共组件、template模版插槽
前端·javascript·html
QQ2740287568 小时前
Soundness Gitpod 部署教程
linux·运维·服务器·前端·chrome·web3
前端小崔8 小时前
从零开始学习three.js(18):一文详解three.js中的着色器Shader
前端·javascript·学习·3d·webgl·数据可视化·着色器
哎呦你好8 小时前
HTML 表格与div深度解析区别及常见误区
前端·html
运维@小兵8 小时前
vue配置子路由,实现点击左侧菜单,内容区域显示不同的内容
前端·javascript·vue.js