DOM= Document Object Model,文档对象模型,DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。换句话说,这是表示和处理一个HTML或XML文档的常用方法。DOM实际上是以面向对象方式描述的文档模型。DOM定义了表示和修改文档所需的对象、这些对象的行为和属性以及这些对象之间的关系。可以把DOM认为是页面上数据和结构的一个树形表示,不过页面当然可能并不是以这种树的方式具体实现。
通过 JavaScript,您可以重构整个 HTML 文档。您可以添加、移除、改变或重排页面上的项目。
几个常用的节点类型:
节点类型 | 节点描述 | nodeName | nodeValue | nodeType |
---|---|---|---|---|
element | 元素节点 | 元素名 | null | 1 |
text | 文本节点 | #text | 文本内容 | 3 |
document | 文档 | #document | null | 9 |
comment | 注释 | #comment | 注释文本 | 8 |
attribute | 属性节点 | 属性名称 | 属性值 | 2 |
nodeType:查看某节点是什么类型
代码如下:
var div1=document.getElementById('div1');
alert(document.nodeType);//弹出数字9
alert(div1.nodeType);//弹出数字1
文字也算节点:
<body>
<div id="div1">123456</div>
<script>
var div1=document.getElementById('div1');
console.log(div1.childNodes);//输出#text
console.log(div1.childNodes[0]);//输出'123456'
console.log(div1.childNodes[0].nodeType);//输出3
</script>
</body>
123456是文本节点(div里面没有东西、换行、文字都是文本节点),childNodes子节点类数组,获取某个节点下的所有子节点
chlidren:不是标准的属性,但是所有浏览器都支持,找到某个元素下所有元素子节点
<body>
<!--<div id="div1">123456</div>-->
<div id="div1">
</div>
<script>
var div1=document.getElementById('div1');
console.log(div1.childNodes[0]);
</script>
结果如下:
div里面只包含文字的算一个子节点(无论有多少空格):
例:
<body>
<div id="div1">qqq
</div>
<script>
var div1=document.getElementById('div1');
console.log(div1.childNodes.length);//输出1
</script>
</body>
注释节点:节点类型为数字8
<div id="div1"><!--这是一个注释-->
</div>
<script>
var div1=document.getElementById('div1');
console.log(div1.childNodes[0]);//输出<!--这是一个注释-->
console.log(div1.childNodes[1]);
console.log(div1.childNodes[0].nodeValue);//查看div下注释的内容
</script>
</body>
div下有两个子节点,一个是注释节点,一个是文本节点
属性节点:节点类型为2
<body>
</div>-->
<div id="div1></div>
<script>
var div1=document.getElementById('div1');
console.log(div1.attributes[0].nodeType);//输出2
console.log(div1.attributes[0].nodeValue);//查看节点的属性值,输出div1
console.log(div1.attributes[0].nodeName);//查看节点的属性名,输出id
</script>
</body>