DOM文档对象模型Document Object Model;当前载入页面所拥有的对象(代表当前文档)
DOM特点:
通过DOM可以对整个HTML文档进行新建、添加、更新、删除等操作
DOM模型符合WEB标准,兼容性好。
通过DOM可以操作HTML、XHTML、XML文档。

DOM规则
整个文档是一个文档节点
每个HTML标签是一个元素节点
包含HTML元素中的文本是文本节点
每一个HTML属性是一个属性节点
注释是注释节点
Document对象获得节点的方法
通过ID获取文档节点
document。getElementById(id)
通过name属性获得文档节点集合(数组)
document。getElementsByName(name);
通过TagName(标记名称)标记获得文档节点集合(数组);
document.getElementsByTagName(tagname)
补充:querySelectorAll():选择括号内符合的所有选择器。返回值为nodelist
var lis=document.query SelectorAll(Ti')://代表获得所有li
querySelector():选择括号内符合的选择器内容,如果是多个,只返回第一个
var h=document.querySelector(.bg)://返回调用class=bg的元素
兼容:仅兼容支持css3的浏览器
节点名称:
元素节点的nodename是标签名称
属性节点名称是Attributes【下标】
nodeValue是节点值
对于文本节点,nodevalue属性包含文本
对于属性节点,nodevalue属性包含属性值
对于节点的操作
创建节点
createElement()创建一个元素节点
careateTextNode()创建一个文本节点
添加节点
appendChild(node)
添加节点到当前节点内部的后面(新创建的节点)
移动节点到当前节点内部的后面(已有节点)
insertBefore(要添加或移动的节点,参考节点)
添加节点到当前节点内部的前面(新创建的节点)
移动节点到当前节点内部的前面(已有节点)
实例:
var onenode=document.getElementById("one");//通过ID找到节点
var hnode=document.createElement("h2");//创建新节点
var tnode=document.createTextNode("hellow js");//文本节对象(类型对象)
hnode.innerHTML="我是第一个节点h2";//向新节点里放文本信息
onenode.appendChild(hnode);//父节点.appendChild(子节点对象)
onenode.appendChild(tnode);
//移动节点
var butnode=document.getElementById("but");
onenode.appendChild(butnode);
删除节点
removeChild()删除子节点
remove() 删除节点
复制节点
cloneNode(true)深拷贝————除了复制节点,还复制所有子节点和文本节点
cloneNode(false)浅拷贝————只复制节点
实例:
formnode.insertBefore(hnode.cloneNode(true),formnode.username)
替换节点
replaceChild(新节点,被替换的节点)
判断节点是否有子节点
hasChildNodes()判断是否有子节点
是否包含某节点
contains()判断是否包含某节点(括号里必须是对象形式)
if(a.contains(document.getElementsByTagName("span")[0])){
alert("haha")
}
更改为父节点
parentNode:更改对象为当前节点的父节点
通过父节点更改为子节点
firstChild更改为当前对象的第一个子节点(前面不能有空格,否则获得的是文本节点)、
lastChild:更改为当前对象的最后一个节点子节点(后面不能有空格,否则获得是文本节点)
以集合方式更改为子节点(集合方式)
childNode:更改为子节点的集合(下标从0开始)(包含文本和节点)
children:更改为子节点集合(下标从0开始)(只包含节点)
更改为兄弟节点
nextSibling:更改为下一个兄弟节点(后面不能有空格空格)
previousSibling:更改为上一个兄弟节点(前面不能有空格)
实例://找到当前对象的其他兄弟对象
//封装兄弟是需注意:在获得当前兄弟的其他元素时要用children
// 返回的对象是对象类型或者是数组类型
// 对象的命名和封装的命名需注意用语义化命名
function siblings(pobj){
//1、先找到当前对象
var pobj=document.getElementById("p3");
// 2、找到pobj的父级对象
var fobj=pobj.parentNode;
// 3、找到父级对象的所有子对象
var arr=fobj.children;
// 4、在父级对象所有的子对象中排除自己,获得其他兄弟
var newarr=[];
for(var i=0;i<arr.length;i++){
if(arr[i]!=pobj){
newarr.push(arr[i]);
}
}
return newarr;
}
//调用封装好的function
var returnvalue=siblings(document.getElementById("p3"));
console.log(returnvalue);
var returnls=siblings(document.getElementById("l1"))
console.log(returnls)