zoukankan      html  css  js  c++  java
  • js中parentNode,parentElement,childNodes,children

    首先了解parentNode,parentElement,childNodes,children四大属性之前,必须对Dom树有一定的了解,在Dom文档结构中,HTML页面每一部分都是由节点组成的,节点的类型一共有3种,元素节点,文本节点,属性节点,从图中可以看出属性节点属于元素节点的分支,一般不常考虑,
    下来详细介绍,childNodes,childern,
    childNodes指的是返回当前元素子节点的所有类型节点,其中连空格和换行符都会默认文本节点,代码如下:

    打印结果:

    其中空格和文本均打印为文本节点,这里有一个重点要说明一下!!!
    之前说childNodes返回的是所有节点的数组,但是如果我给你li元素添加属性会发现元素的长度总长度并没有改变,也就是说在childNodes只会返回文本和元素的节点,并不能返回属性节点!!!
    childern指的是返回当前元素的所有元素节点,代码如下

    执行代码如下:

    children很直观的反应了返回元素节点的属性。
    接下来讲解:parentNode,parentElement,
    parentNode:顾名思义-父节点
    parentElement:顾名思义-父元素
    两者在通常情况下都是一样的,因为包含元素的节点只有可能是元素节点,这里可能会有一个误区,有些人可能会想文本节点是否可以包含元素节点,来作为父节点,这里是不行的,文本节点只是文本本身,自身算一个节点,文本节点的父节点直接是元素节点。
    那下面我们就说一下,parentNode,parentElement,的特例,

    这里运行结果是一致的,他们的祖宗元素都是HTML,但是我们试着想一下,再往上一层,就是根部document了,并不是元素,我们可以一起来看一下下面的代码

    执行代码如下:

    这里的唯一区别就出来了,因为parentElement找的是元素,因此当找到根部document时候就是出现值为null的报错,而且parentNode找的是节点,当然就可以显示出来了!

  • 相关阅读:
    HDu 2830 Matrix Swapping II(dp)
    服务器http处理流程
    iOS网络缓存机制
    软件设计需要的两项能力:理解与抽象
    编程思想的本质
    编程思想:面向对象与面向过程
    You Can Customize Synthesized Instance Variable Names @property
    nil / Nil / NULL / NSNull VS objc_msgSend
    对OC中property的一点理解
    @property 的本质是什么?
  • 原文地址:https://www.cnblogs.com/raind/p/9520133.html
Copyright © 2011-2022 走看看