JavaScript之DOM

本文根据(JavaScript高级程序设计(第三版))整理笔记

Node类型

  • JavaScript中的所有节点类型都继承自Node类型, 每个节点有一个nodeType属性. 用于表明节点的类型
  • nodeType有一下值:
  • Node.ELEMENT_NODE, 其值为1, 表示元素节点
  • Node.TEXT_NODE, 其值为3, 文本节点
  • Node.PROCESSING_INSTRUCTION_NODE, 值为7,
  • Node.COMMENT_NODE, 其值为8, 注释节点
  • Node.DOCUMENT_TYPE_NODE, 其值为9, Document节点
  • Node.DOCUMENT_TYPE_NODE, 其值为10, 描述DocumentType节点. <!DOCTYPE html>
  • Node.DOCUMENT_FRAGMENT_NODE, 其值为11, DocumentFragment节点

属性

  • 节点有nodeNamenodeValue属性, 表示节点名和节点值. 对于元素节点, nodeName返回元素的标签名, nodeValue返回null.
  • 节点的childNodes属性返回节点的子节点, 它是一个NodeList类数组对象(动态), 可以通过方括号和item(index)方法取得子节点
  • 每个节点有个parentNode属性, 指向它的父节点
  • 节点的previousSiblingnextSibling属性分别返回节点的上一兄弟节点和下一兄弟节点.
  • 节点的firstChild返回节点的第一个子节点, lastChild返回节点的最后一个子节点
    + hasChildNodes()方法返回true/false, 当节点有子节点时, 返回true

方法

  • appendChild()childNodes列表的末尾添加节点. 注意: 若加入的节点时已存在于文档的节点, 则将此节点移动到新位置.
  • insertBefore(node, posNode), 在posNode节点之前插入node节点
  • replaceChild(insNode, repNode) 将repNode节点替换为insNode节点
  • removeChild(node)将node节点移除
  • 可以用cloneNode()赋值一个节点, 当传入true参数时执行深复制, 传入false执行潜复制
  • 假如出现了文本节点不包含文本或者连续出现两个文本节点, 则可以用normalize()方法. 这个方法会删除空的文本节点, 也会合并相邻的节点

Documet类型

  • JavaScript中Document表示文档, 浏览器中documentHTMLDocument的实例. HTMLDocument继承自Document.
  • document同时也是window的一个属性.
  • nodeType = 9
  • nodeName ="#document"
  • nodeValue = null
  • parentNode = null
  • document.documentElement指向<html>元素
  • document.body指向<body>元素
  • document.doctype指向<DOCTYPE>
  • document.title指向<title>
  • document.URL指向网页的URL
  • document.domain返回域名
  • document.referrer返回来源页的URL
  • document.getElementById()通过Id返回元素
  • document.getElementsByTagName()通过标签名返回元素集合, 它是HTMLCollection对象. 这个对象有一个namedItem方法, 也可以调用item()方法

document还有一些属性集合也为HTMLCollection对象

  • document.anchors返回所有带有name属性的<a>元素
  • document.forms返回文档中所有的<form>元素
  • document.images返回所有的<img>元素
  • document.links 返回带有href属性的<a>元素
  • 可以通过document.implementation检测DOM实现的功能, 他有一个hasFeature()方法
  • 通过document.write(), document.writeln(), document.open()document.close()方法向文档写入信息.

Element类型

  • nodeType = 1
  • nodeName为标签名
  • nodeValue = null
  • parentNode = Document或者Element
  • nodeNametagName返回相同的值
    HTML元素有以下的标准特性:
  • id: 元素在文档中的唯一标识
  • title: 对元素的说明
  • lang: 元素内容的语言代码
  • dir: 语言方向. ltr为从左至右, rtl为从右至左
  • className: 对应元素的class属性

  • getAttribute()获取元素的属性

  • setAttribute()设置元素的属性
  • removeAttribute()删除属性
    可以对Element类型的值使用attributes属性, 它包含一个NamedNodeMap(动态)对象, 有如下方法:
  • getNamedItem(name)返回nodeNamename的节点
  • removeNamedItem(name)从列表中移除nodeNamename的节点
  • setNamedItem(node)向列表中添加节点, 以节点的nodeName为索引
  • item(pos)返回pos索引处的节点
  • 我们还可以通过document.createElement()创建新元素

Text类型

  • nodeType = 3
  • nodeName = "#text"
  • nodeValue为节点所包含的文本
  • parentNodeElement
  • Text类型的data属性等同于nodeValue, 以下方法可以操作节点的文本:
  • appendData(text): 将text添加到节点末尾
  • deleteData(offset, count)offset指定的位置开始删除count个字符
  • insertData(offset, text)offset指定的位置插入text
  • replaceData(offset, count, text)text替换从offset指定的位置开始到offset+count为止处的字符串
  • splitText(offset)offset指定的位置将当前文本节点分成两个文本节点
  • subsringData(offset, count)提取从offset指定的位置开始到offset+count为止处的字符串
  • 文本节点还有一个length属性, 保存着节点中字符的数目.
  • 默认情况下, 每个可以包含内容的元素最多只能有一个文本节点, 而且必须确实有内容存在.

Comment类型

这个节点类型表示的是文档中的注释

  • nodeType = 8
  • nodeName = "#comment"
  • nodeValue 为注释的内容
  • parentNodeDocumentElement
  • document.createComment()可以创建注释

DocumentFragment类型

它表示文档片段

  • nodeType = 11
  • nodeName = "#document-fragment"
  • nodeValue = null
  • parentNode = null
  • 可以用document.createDocumentFragment()方法创建节点
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值