HTML中是否有孙子元素?

时间:2015-06-29 17:39:11

标签: html5 element children

我认为这显然是肯定的,但我正在通过的教程告诉我:

  

"就像一个真正的家庭一样,元素有孩子,孙子,   曾孙,等等(尽管我们没有做出这种区分   使用HTML-元素的子元素,以及所有孩子的子元素   第一位父母的子女)。"

这是大会还是作者的意见?我已经非常广泛地搜索过W3C,但我找不到任何确认此声明的证据。

5 个答案:

答案 0 :(得分:1)

通过iPhone执行此操作(对于缺乏相关证据和/或准确正确的条款而感到抱歉),但作为网络开发者已有15年以上的时间,我同意只有儿童。这种行为出现在CSS和JavaScript中 - 当你想要一个元素内部的东西时,你只需要它就好像它只是一个孩子。如果它真的是一个子级或三层以上的层次并不重要,该过程将遍历DOM并标记/利用该元素的每个实例(符合要求)作为子级或更低级别存在。

因此,虽然我无法指出确认这一点的正式文档,但是操纵或修改DOM的任何事物(AFAIR)的行为都符合“仅限子项”规范。

答案 1 :(得分:1)

不,不是真的。确实,HTML元素或HTML文档中的实际节点(DOM =文档对象模型)可以拥有子元素并且可以拥有父元素。

但与许多生物不同,没有性别和DNA混淆来创造一个新的节点。实际上,您甚至不需要父级来创建新节点。你可以创造一个无中生有的。

家谱

那么这些关系是什么?嗯,它们只是用于将它们放在层次结构中。 HTML文档有一个根节点,就像节点的Adam一样。其他节点可以将此节点作为其“父”,这意味着它们在层次结构中仅低一级。

它不是一个节点网络,而是一个树,所以总是(最多)一个节点(我们称之为父节点),层次结构中较高,零节点或更多节点较低。在演讲中你称之为父母和孩子,因为这是一个容易理解的家庭树类比,但这也是比较结束的地方。只有一个“父”,它是采用父级,因为它不一定是创建节点的那个。

如此常见的发言包括:

  • 父级:层次结构中较高的节点(更接近树的主干)
  • 子级:层次结构中较低的节点(树中当前节点的分支)。您可以使用DOM中节点的属性childrenchildNodes找到它。
  • 兄弟姐妹:共享同一父母的节点。
  • 后代:节点是孩子,大孩子,节点的大孩子。

就目前而言。当然,你可以将他们称为祖父母,老叔叔,侄子和兄弟,但这会让它更加混乱,所以这并不是真的有用。

大孩子也是孩子吗?

现在这篇文章说大孩子也是孩子。这是真的。

例如,如果您有一个如下所示的CSS选择器:div img,它会选择所有img个元素,这些元素是子元素,大孩子,曾祖母,等等{{1} }。 jQuery和函数querySelector and querySelectorAll中的内置也严重依赖于这种表示法。

但是,如果您引用div中元素的children属性,则只能获得直接子项,也不会获得子项。实际上,CSS选择器也做出了这种区分。如果您选择JavaScript,则会获得后代图片;如果您选择div img,则只能获得div > img的直接子图片。 (见CSS child and sibling selectors

所以,不,声明不对。一个节点只有孩子,这些孩子可以有自己的孩子。 CSS和JavaScript中有智能选择器,可以让您选择族谱中任何“深度”的后代,但这并不会使这些节点成为父节点的直接子节点。

答案 2 :(得分:0)

HTML中没有真正的孙子元素。 但是你可以封装元素,例如

<div id='a'>
    <div id='b'>
        <div id='c'>
        </div>
    </div>
</div>

如您所见,b是a的子元素,c是b的子元素。 因此,从逻辑上讲,c是一个没有的孙子元素 HTML中的孙子元素。

答案 3 :(得分:0)

所有他说的是你可以无限期地嵌套元素......

<div class="great-grandparent">
    <div class="grandparent">
        <div class="parent">
            <div class="child"></div>
        </div>
    </div>
</div>

答案 4 :(得分:0)

父节点的子节点的子节点不是其祖父节点的子节点, 但他们是祖父母的后代节点。

当您在xpath中使用轴来查找节点时,这一点变得更加重要。

并非所有html都符合xml标准。但它正朝这个方向发展 并且您可以在脚本标记中使用xpath来查找html节点 因此,重要的是要注意后代和孩子之间的区别。

大多数使用xpath的关系使用&#39; descendent&#39;而不是孩子&#39;, 它严格地说是上下文节点的直接子节点。