JavaScript脚本化文档下
属性
HTML 元素由一个标签和一组称为属性(attribute)的键值对组成。例如 a 标签的 href 属性,img 标签 src 属性
HTML 属性作为 Element 的属性
表示 HTML 文档元素的 HTML Element 对象定义了读\写属性,它们映射了元素的 HTML 属性。
HTMLElement 定义了通用的 HTTP 属性(如 id、标题 lang 和 dir)等属性,以及事件处理程序属性(如 onclick)。并且特定的类型元素定义了特定的属性。例如:
1 | var image = documment.getElementById("myiamge") |
表示 HTML 属性的值通常是字符串,如 input 输出文本的值。 需要注意的是,这个属性是通过 API 来获取和设置的,并不能删除该属性。设想一下,没有有输入值的输出框。
非标准的HTML属性
Element 类型定义了 getAttribute()和setAttribute() 方法来查询和设置非标准的 HTML 属性。
1 | var image = document.images[0] |
通常情况下getAttribute() 返回字符串,并不会返回数值、布尔值、对象。对于 HTML 元素来说,属性名字不会区分大小写
1 | test1111.getAttribute('class') |
Element 类型 定了其他两个相关方法,hasAttribute() 和 remove Attribute() ,用来检查命名属性是否存在和完全删除。
元素的内容
inerHTML 与 outerHTML ⚠️
inerHTML
在元素上设置该属性,用新字符串内容替换元素当前内容outerHTML- 查询
outerHTML时,返回的字符串包含被查询元素的开头和结尾标签 - 在设置
outerHTML时,元素本身将会被新内容替换
- 查询
作为纯文本
在文档中插入纯文本,标准的方法是用 Node 的 textContent 属性来实现。
⚠️ IE的兼容性
>= IE9,在IE中,可以用innerText属性替代
1 | var para = document.getElementByTagName("p")[0 |
作为Text节点的元素内容
❓ 作用不是很明确,
详见犀牛书p381
创建、插入和删除节点
1 | // 从指定的URL,异步加载和执行脚本 |
创建节节点
createElement()- 创建新的
Element节点可以使用Document对象的createElement()方法。 - 给方法传递元素的标签名:对
HTML文档来说该名字不区分大小写,对XML文档来说则需要区分大小写。
- 创建新的
创建
Text节点var newnode = document.createTextNode("text node content")
插入节点
一旦有了一个新节点,可以用 appendChild() 或 insertBefore()。
appendChild() 是在需要插入的 Element 节点删调用
insertBefore() 类似于前者,它需要接受两个参数,第一个参数就是待插入的节点,第二个参数是已经存在的节点
1 | // 将child节点插入到parent中,使其成为第n个子节点 |
删除和替换节点
removeChild() 方法是从文档中删除一个节点
1 | n.parentNode.removeChild(n) |
replaceChild() 方法删除一个子节点并用一个新节点取而代之。
1 | n.parentNode.replaceChild(document.createTextNode("[ REDACTED ]"), n) |
生成目录表




文档和元素的几何形状和滚动
1 | // 查询窗口滚动条的位置 |
1 | // 获得在视口坐标中的位置,返回left、right、top、bottom属性的对象 |
判断元素在某点
getBoundingClientRect() 方法能确定元素在视口中的位置
elementFromPoint() 方法判定视口指定位置有什么元素
滚动
1 | // 获得文档和视口的高度,offsetHeight会在下面解释 |