DOM:(document object model)文档对象模型,主要用来操作网页
DOM节点包含四个节点:
- 文档节点:整个HTML文档
- 元素节点:HTML标签
- 属性节点:元素属性
- 文本节点:HTML文本内容
| 节点属性 | nodeName | nodeType | nodeValue | | --- | --- || --- | --- | | 文档节点| document| 9| null| | 元素节点| 标签名 | 1| null| | 属性节点|属性名 | 2| 属性值| | 文本节点| text | 3| 文本内容|
ps:所有的节点都有以上三个属性
通过document对象调用:
- getElementById():获取id属性下的一个元素节点对象
- getElementsByTagName():通过标签名获取一组元素节点对象
- getElementsByname()通过name获取一组元素节点对象
获取元素节点的子节点:
- getElementsByTagName():方法,返回当前节点的指定标签名后代节点
- childNode:属性,表示当前节点的所有子节点
- firstChild:属性,表示当前节点的第一个子节点(包含空白文本)
- lastChild:属性,表示当前节点的最后一个子节点
获取父节点和兄弟节点:
- parentNode:属性,当前节点的父节点
- previousSibling:属性,当前节点的前一个兄弟节点
- nextSibling:属性,当前节点的后一个兄弟节点
<script>
// 创建一个函数,专门为指定元素绑定单击事件
// idStr 绑定单击响应函数的对象的ID属性值
// fun 表示事件回调函数,当单击元素,该函数将慧触发
function MyClick(idStr,fun){
var btn = document.getElementById(idStr);
btn.onclick = fun;
}
var btn01 = document.getElementById("btn01");
btn01.onclick = function(){
//查找#bj节点
var bj = document.getElementById("bj");
alert(bj.innerHTML);
};
// 为btn02绑定一个单击响应函数
var btn02 = document.getElementById("btn02");
btn02.onclick = function(){
// 使用getElementsByTagName获取li一组元素
// 这个方法返回一个类数组对象,所有查询到的元素都会封装到对象中
// 即使只有一个元素,也返回数组
var lis = document.getElementsByTagName("li");
// 遍历lis
for(var i=0; i<lis.length; i++){
alert(lis[i].innerHTML);
}
};
var btn03 = document.getElementById("btn03");
btn03.onclick = function(){
var inputs = document.getElementsByName("gender");
// alert(inputs.length);
// innerHTML用来获取元素内部HTML代码,对于自结束标签,该属性没有意义
// 如果需要读取元素的属性,直接使用元素.属性名,除了class属性,该属性使用元素.className形式
for(var i=0; i<inputs.length; i++){
alert(inputs[i].value);
}
};
// 查找#city下所有li节点
var btn04 = document.getElementById("btn04");
btn04.onclick = function(){
var citys = document.getElementById("city");
var lis = citys.getElementsByTagName("li");
for(var i=0; i < lis.length; i++){
alert(lis[i].innerHTML);
}
};
// 返回#city的所有子节点
var btn05 = document.getElementById("btn05");
btn05.onclick = function(){
var cis = document.getElementById("city");
var cityChild = cis.childNodes
/*childNode属性会获取包括文本节点在内的所有节点,DOM标签与标签间的空白也会当成文本节点,
注意,在IE8及以下,不会将空白文本当成子节点
*/
//children属性可以获取当前元素的所有子元素
var cityChild2 = cis.children;
alert(cityChild2.length);
};
// 返回#phone的第一个子节点
var btn06 = document.getElementById("btn06");
btn06.onclick = function(){
var phone = document.getElementById("phone");
// firstChild获取当前元素的子节点,包括空白文本
var fChild = phone.firstChild;
var fChild2 = phone.firstElementChild;//不适用于IE8 及以下版本
alert(fChild2);
};
// 返回#bj的父节点
MyClick("btn07",function(){
var bj = document.getElementById("bj");
var bjParent = bj.parentNode;
// innerText该属性可以获取内部的文本内容,与innerHTML的区别是它会自动将html标签去除
var bjParent2 = bj.parentNode;
alert(bjParent2.innerText);
});
// 返回#android的前一个兄弟节点
MyClick("btn08",function(){
var andro = document.getElementById("android");
// previousSibling当前节点的前一个兄弟节点
var andrPrev = andro.previousSibling;
// previousElementSibling获取当前节点的前一个兄弟元素,不适用于IE8及以下的浏览器
var andrPrev2 = andro.previousElementSibling;
alert(andrPrev2.innerHTML);
});
// 返回#username的value属性值
MyClick("btn09",function(){
var um = document.getElementById("username");
alert(um.value);
});
// 设置#username的value属性值
MyClick("btn10",function(){
var umv = document.getElementById("username");
umv.value = "hello";
alert(umv.value);
});
// 返回#bj的文本值(三种方式获取)
MyClick("btn11",function(){
var bjVlaue = document.getElementById("bj");
// alert(bj.innerText);
// 获取bj的文本节点
var bc = bjVlaue.firstChild;
alert(bc.nodeValue);
// alert(bjVlaue.firstChild.nodeValue);
});
</script>