JavaScript 脚本文档之二(学习笔记)

本文深入探讨了文档结构的概念及其在Web开发中的重要性,包括节点对象树的构建、遍历方法以及如何利用这些特性进行高效的数据检索与操作。通过解析文档的层次结构,开发者能更好地理解和掌握元素之间的关系,从而实现更精细的页面控制与功能实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文档结构和遍历

      一旦从文档选取了一个元素,有时需要查找文档中与之在结构上相关的部分(父亲、兄弟和子女)。文档从概念上可以看做是一棵节点对象树。节点类型定义了遍历该树所需的属性。另一个API允许文档作为元素对象树来遍历。

     作为节点树的文档

              Document对象、它的Element对象和文档中表示文本的Text对象都是Node对象。Node定义了以下重要的属性:
              parentNode
                    该节点的父节点,或者针对类似Document对象应该是null,因为它没有父节点。
              childNodes
                    只读的类数组对象(NodeList对象),它是该节点的实时表示。
              firstChild、lastChild
                    该节点的子节点中的第一个和最后一个,如果该节点没有子节点则为null。
              nextSibling、previoursSibling
                    该节点的兄弟节点中的前一个和下一个。及诶单的顺序反映了它们在文档中出现的顺序。
              nodeType
                     该节点类型。9代表Document节点,1代表Element节点,3代表Text节点,8代表Comment节点,11代表DocuemntFragment节点。  
              nodeValue
                     Text及诶单或Comment节点的文本内容。
              nodeName
                      元素的标签名,以大写形式表示。
              但请注意,该API对文档文本的变化及其敏感。

    作为元素树的文档

             将文档看作是Element对象树,忽略部分文档:Text和Comment节点。
             该API的第一部分是Element对象的children属性。它也是一个NodeList对象,但不同的是children列表只包含Element对象。children并非标准属性,但是它在所有当前的浏览器中都能工作。
              注意,Text和Comment节点没有children属性,Node.parentNode属性不可能返回Text或Comment节点。任何Element的parentNode总是另一个Element,或者,追溯到树根的Document或DocumentFragment节点。
             基于元素的文档遍历API的第二部分是Element属性,后者类似Node对象的子属性和兄弟属性:
             firstElementChild,lastElementChild
                        类似 firstChild和lastChild,但只代表子Element。
             nextElementSibling,previousElementSibling
                        类似nextSibling和previousSibling,但只代表兄弟Element。
              childElementCount
                        子元素的数量。返回的值和children.length值相等。

属性

          HTML元素由一个标签和一组称为属性的名值对组成。DOM还定义了另外一个API来获取或设置XML属性值和非标准的HTML属性。

       HTML 属性作为Element的属性

                 表示HTML文档元素的HTMLElement随想定义了读/写属性,它们反映了元素的HTML属性。

       获取和设置非标准HTML属性

                Element类型还定义了getAttriute()和setAttribute()方法来查询和设置非标准的HTML属性,也可用来查询和设置XML文档中元素上的属性。
                Element类型还定义了两个相关的方法,hasAttribute()和removeAttribute(),它们用来检测命名属性是否存在和完全删除属性。当属行为布尔值时这些方法特别有用:有些属性(如HTML的表单元素的disabled属性)在一个元素中时候存在是重点关键,而其值却无关紧要。
                 如果操作包含来自其他命名空间中属性的XML文档,可以使用这4个方法的命名空间版本:getAttributeNS()、setAttributeNS()、hasAttributeNS()和removeAttributeNS()。这些方法 需要两个属性名字符串作为参数。第一个标识命名空间 的URI,第二个通常是属性的本地名字,在命名空间中是无效的。

        数据集属性

               HTML5中,任意以“data-”为前缀的小写的属性名字都是合法。
               HTML5还在Element对象上定义了dataset属性。该属性指代一个对象,它的各个属性应于去掉前缀的data-属性。带连字符的属性对应于驼峰命名法属性名:data-jquery-test属性就变成dataset.jqueryTest属性。

        作为Attr节点的属性

                Node类型定义了attributes属性。针对非Element对象的任何节点,该属性为null。对于Element对象,attributes属性是只读的类数组对象,它代表元素的所有属性。它可以用数字索引访问,可以枚举元素的所有属性。并且,它也可以用属性名索引。

       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值