zoukankan      html  css  js  c++  java
  • 包含表格的文档的DOM结构分析

    一般而言,DOM结构准确地反映了HTML文档所包含的内容,也就是说,每个HTML标记表现为一个标记节点(tag node),每个文本项内容表现为一个文本项节点(text node)。这种表现形式一般称为WYSIWYG,即所见即所得。但是,<TABLE>标记是一个例外情况。当有<TABLE>标记时,我们可以设想它另外包含一对<TBODY>标记。来看看下面的一段代码:

      <TABLE ID="tableNode">
      <TR><TD BGCOLOR="yellow">This is row 1, cell 1</TD><TD BGCOLOR="orange">This is row 1, cell 2</TD></TR>
      <TR><TD BGCOLOR="red">This is row 2, cell 1</TD><TD BGCOLOR="magenta">This is row 2, cell 2</TD></TR>
      <TR><TD BGCOLOR="lightgreen">This is row 3, cell 1</TD><TD BGCOLOR="beige">This is row 3, cell 2</TD></TR>
      </TABLE>

      在分析它的DOM结构前,我们要为这段代码添加上一对<TBODY>标记:

      <TABLE ID="tableNode">
      <TBODY>
            中间代码略
      </TBODY>
      </TABLE>

      经过这样的处理,DOM结构可以分析如下:Tree的根是<TABLE>标记节点,它只包含一个孩子节点<TBODY>;<TBODY>标记节点又包含3个孩子节点,每一个节点对应一个表格行<TR>;每个<TR>标记节点包含2个孩子节点,每一个节点对应表格行的一个单元<TD>;每个<TD>标记节点包含孩子节点,也就是一个文本项节点,它表示了单元格的内容。

      右面是上述HTML文档的DOM Tree图示,可点击放大。

      包含表格文档的节点导航

      现在我们来看看如何在包含表格的文档中进行DOM节点导航。同样,正确地理解上面所示的DOM Tree图示,有助于我们清晰地看懂导航节点表达式。

    起始节点
    到达节点
    寻址表达式
    <TABLE> 表格的第2行 tableNode.firstChild.childNodes[1]
    表格的第2行的第1个单元 tableNode.firstChild.childNodes[1].childNodes[0]
    第1行第2个单元的内容 tableNode.firstChild.firstChild.childNodes[1].firstChild
    表格第3行 <TABLE> tr3Node.parentNode.parentNode或
    tr3Node.previousSibling.parentNode.parentNode或   tr3Node.previousSibling.previousSibling.parentNode.parentNode
    <TABLE> 分别到达6个单元格 tableNode.firstChild.firstChild.firstChild.firstChild
    tableNode.firstChild.firstChild.childNodes[1].firstChild
    tableNode.firstChild.childNodes[1].firstChild.firstChild   tableNode.firstChild.childNodes[1].childNodes[1].firstChild
    tableNode.firstChild.childNodes[2].firstChild.firstChild   tableNode.firstChild.childNodes[2].childNodes[1].firstChild
  • 相关阅读:
    设计模式的原则和法则
    GoF的23种设计模式分类和功能
    2020年智慧电力解决方案
    【转载】「黑科技」智能防疫消毒机器人 技术方案介绍-disinfection robot
    【转载】如何让电力巡检机器人项目落地
    30多张图来了解Keil5的使用
    [数学学习与代码]最小二乘法--多元线性方程求解
    MTK-LCM 屏幕使用fbconfig/PanelMaster来调试LCM驱动
    MTK 使用iptable 命令来完成网络路由(android WIFI/4G分享网络)
    MTK(android init.rc) 写一个开机启动的服务
  • 原文地址:https://www.cnblogs.com/wzyexf/p/368257.html
Copyright © 2011-2022 走看看