文档对象模型,html DOM定义了访问和操作html文档的标准方法,由w3c定义,由浏览器实现。
DOM将html文档表达为树结构。
文档中所有内容都是节点:
节点树有父、子、同胞的概念。
每一个节点被看成一个Element对象,DOM提供的编程接口就是这些对象的方法和属性,除此之外,还有一个Document对象表示整个文档。
document对象表示整个html页面,document是window的一个属性,因此能够直接访问。通过document可以取得与页面有关的信息,而且还能操作页面外观和其底层结构。
用于获取或替换html元素的内容。例子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>DEMO</title>
</head>
<body>
<div id="div1">
<p>hello</p>
</div>
<script>
//获得节点
var div = document.getElementById("div1");
//输出innerHTML
console.log(div.innerHTML);
//修改innerHTML
div.innerHTML = "<h1>hello</h1>";
</script>
</body>
</html>
控制台输出:<p>hello</p>
页面“hello”的标记被改为h1
nodeName 属性规定节点的名称。
注释:nodeName 始终包含 HTML 元素的大写字母标签名
规定节点的值:
nodeType 属性返回节点的类型。nodeType 是只读的。
style属性可以访问节点的css样式,例子:
var div = document.getElementById("div1");
div.style.color = "red";
注:读取属性时,如果属性不存在返回空字符串而不是null
获取/设置/移除属性,同样可用于css属性修改,但也可用于其他属性。
返回带有指定ID的元素。
返回指定标签名所有元素。
返回指定class的所有元素。
document可以看成文档根节点,因此如果想访问整个文档的所有
元素,使用document.getElementsByTagName("p")即可,如果像选出id="id"节点的子
元素,那么使用document.getElementById("id").getElementsByTagName("p")即可。
注意:这些属性包括文本节点,而不只是元素节点!如果指向访问元素节点(通常就是这样),请参考DOM扩展章节,Element Traversal API部分。
var div = document.getElementById("div1");
var p = document.createElement("p");
var text = document.createTextNode("hello");
p.appendChild(text);
div.appendChild(p);
一些插入操作:
child.parentNode.removeChild(child)
类似代码,查找父子元素不用标注太多id属性文本节点由Text类型对象表示,可以使用createTextNode()创建。一般情况下,每个元素只有一个文本子节点。实际上处理文本节点,在Element对象上,用innerHTML就行了。
请参考事件处理章节。