DOM知识块的笔记总结
来源:互联网 发布:合肥工业大学网络视频 编辑:程序博客网 时间:2024/05/21 13:32
js的dom
dom是document object model文档对象模型的缩写。
d:文档- html文档 或 xml文档
o:对象-document 对象的属性和方法
m:模型
html文件加载到内存之后会形成一颗dom树,根据这些节点对象我们可以进行脚本代码的动态修改。
在dom树中一切皆为节点对象。
节点:
由结构图我们可以看出,整个文档就是一个文档节点。
每一个html标签都是一个元素节点
标签中的文字是文本节点
标签中的属性是属性节点
一切都是节点。。。
节点树:
我们从途中可以看出,最上面的就是树根,
节点之间有父子关系,子孙关系,兄弟关系。
直接连线的就是父子关系,
有一个父亲的就是兄弟关系。
dom中的方法和属性:
查找元素节点
getElementById():寻找一个有着给定id属性值的元素,返回值是一个有着给定id属性的元素节点。
如果不存在这样的元素,返回null
该方法只能用于document对象
<script type="text/javascript">
//输出<input type="text" name="userName" id="id1" value="momo"/>value属性的值
/* var inputNode = document.getElementById("id1");
alert(inputNode.value);
*/
//输出<input type="text" name="userName" id="id1" value="momo"/>type属性的值
var inputNode = document.getElementById("id2");
alert(inputNode.type);
查找元素节点
getElementsByName():寻找有着给定name属性的所有元素,这个方法返回一个节点集合,这个集合我们把它当做数组来处理,
这个集合的length属性等于当前文档中有着给定name属性的所有元素的总个数。
<script type="text/javascript">
//通过元素的name属性获取所有元素的节点
//var inputNodes = document.getElementsByName("userName");
//输出数组的长度
//alert(inputNodes.length);
//遍历元素,输出所有value属性的值
/* for(var i=0;i<inputNodes.length;i++){
var inputNode = inputNodes[i];
alert(inputNode.value);
} */
//为我们的每一个输入框添加onchange事件,当值改变时,输出改变后的值
var inputNodes = document.getElementsByName("userName");
for(var i=0;i<inputNodes.length;i++){
var inputNode = inputNodes[i];
inputNode.onchange = function(){
alert(this.value);
};
}
</script>
查找元素节点
getElementsByTagName():寻找有着给定标签名的所有元素,返回一个节点集合,把它当做数组来出来,
这个集合的length属性等于当前文档中有着给定标签名的所有元素的总个数
该方法不必非要用在整个文档上。可以用在某个特定元素的子节点当中寻找有着给定标签名的元素。
<script type="text/javascript">
//获取所有的input元素,返回值是一个数组
var inputNodes = document.getElementsByTagName("input");
//输出数组长度
//alert(inputNodes.length);
//遍历输出value值
/* for(var i=0;i<inputNodes.length;i++){
var inputNode = inputNodes[i];
alert(inputNode.value);
} */
//输出type="text"中value属性的值 不包含按钮(button)
/* for(var i=0;i<inputNodes.length;i++){
var inputNode = inputNodes[i];
if(inputNode.type=="text"){
alert(inputNode.value);
}
} */
//输出所有下拉框select的option标签中value的值
/* var optionNodes = document.getElementsByTagName("option");
for(var i=0;i<optionNodes.length;i++){
var optionNode = optionNodes[i];
alert(optionNode.value);
*/
//输出下拉菜单中id=sele1中option标签中value属性的值
/* var sele = document.getElementById("sele1");
var optionNodes = sele.getElementsByTagName("option");
for(var i=0;i<optionNodes.length;i++){
var optionNode = optionNodes[i];
alert(optionNode.value);
} */
//点击输出按钮,输出下拉框中被选中的值
var btn = document.getElementById("btn");
btn.onclick = function(){
var optionNodes = document.getElementsByTagName("option");
for(var i=0;i<optionNodes.length;i++){
var optionNode = optionNodes[i];
if(optionNode.selected){
alert(optionNode.value);
}
}
};
</script>
查看是否存在子节点
hasChildNodes();该方法是用来检查一个元素是否有子节点,返回值是 true 或 false
var booleanValue = element.hasChildNodes();
文本节点和属性节点不可能再包含任何子节点,所以这两种节点使用hasChildNodes()方法的返回值永远是false
如果hasChildNodes()方法的返回值是false,那么childNodes,firstChild, lastChild 将是空数组和空字符串
//查看id=sele1的节点时候含有子节点
var sele = document.getElementById("sele1");
alert(sele.hasChildNodes());
//查看id=id1的节点是否含有子节点
var int = document.getElementById("id1");
alert(int.hasChildNodes());
文档中的每个节点都有一下属性:
dom属性 - nodeName
nodeName:一个字符串,内容是给定节点的名字
var name = node.nodeName;
-如果节点是元素节点,nodeName返回的是这个元素的名称
-如果是属性节点,nodeName返回的是这个属性的名称
-如果是文本节点,nodeName返回的是一个内容为#text的字符串
注意:nodeName 是一个只读属性。
dom属性 - nodeType
nodeType 返回一个整数,这个数值代表着给定节点的类型。
nodeType 属性返回的整数值对应着节点的类型,常用的有三种:
Node.ELEMENT_NODE ---- 1 --- 元素节点
Node.ATTRIBUTE_NODE ---- 2 ---属性节点
Node.TEXT_NODE ------ 3 ---文本节点
注意:nodeType 是一个只读属性。
dom属性 - nodeValue
nodeValue 返回给定节点的当前值(字符串)
-如果给定节点是一个属性节点,返回值是这个属性的值
-如果给定节点是一个文本节点,返回值是这个文本节点的内容
-如果给定节点是一个元素节点,返回值是null
注意:nodeValue 是一个 读/写 属性,但是不能对元素节点的 nodeVale 属性设置值。
可以为文本节点的 nodeValue属性设置一个值。
var node = document.getElementById("pid");
if(node.firstChild.nodeType==3){
node.firstChild.nodeValue="大宝";
alert(node.firstChild.nodeValue);
}
<script type="text/javascript">
//获得id=id1的元素节点,输出 nodeName,nodeType,nodeVale
/* var node = document.getElementById("id1");
alert(node.nodeName);//input
alert(node.nodeType);//1
alert(node.nodeValue);//null */
//获得id=pid的文本节点,输出nodeName,nodeType,nodeVale
/* var node = document.getElementById("pid");
var textnode = node.firstChild;
alert(textnode.nodeName);//#text
alert(textnode.nodeType);//3
alert(textnode.nodeValue);//大家好才是真的好!广州好迪! */
//获得id=pid的属性节点,输出nodeName,nodeType,nodeVale
var node = document.getElementById("pid");
var p = node.getAttributeNode("id");
alert(p.nodeName);//id
alert(p.nodeType);//2
alert(p.nodeValue);//pid
</script>
替换节点
replaceChild():把一个给定父元素的一个子节点替换成另外一个子节点
var reger = element.replaceChild(newChild,oldChild);
<script type="text/javascript">
//点击某一个节点,替换成例外一个节点
var lol = document.getElementById("lol");
var javase = document.getElementById("javase");
lol.onclick = function(){
var parentNode = this.parentNode;
parentNode.replaceChild(javase,this);
};
</script>
查找属性值
getAttribute():返回一个给定元素的一个给定属性节点的值
var arrtibuteValue = element.getAttribute(attributeName);
给定属性的名字必须以字符串的形式传递给该方法
给定属性的值将以字符串的形式返回,如果给定属性不存在,那么该方法返回一个空字符串。
//获取<li id="javase" value="javase">javase</li>节点的value属性的值
/* var elementNode = document.getElementById("javase");
var str = elementNode.getAttribute("value");
alert(str); */
设置属性节点
setAttribute():将给定元素节点添加一个新的属性值或者改变它现有的属性值
element.setAttribute(attributeName,attributeValue);
属性的名字和属性值必须以字符串的形式传递给该方法。
如果这个属性已经存在,它的值就会被刷新
如果不存在,该方法会先创建该属性在为它赋值
//给<li id="lol" value="lol">lol</li>这个节点添加name属性,
var element = document.getElementById("lol");
element.setAttribute("name", "英雄联盟");
element.setAttribute("name", "王者荣耀");
alert(element.getAttribute("name"));
创建新的元素节点
createElement():按照给定的标签名创建一个新的元素节点。该方法只有一个参数,将要被创建的元素的名字,是一个字符串。
var reference = document.createElement(element);
该方法的返回值是一个指向新创建的节点的引用指针。返回是一个元素节点,所以他的nodeType属性值是1.
/* var li = document.createElement("li");
li.setAttribute("id", "kuihuabaodian");
li.setAttribute("value", "kuihuabaodian");
var text = document.createTextNode("葵花宝典");
li.appendChild(text);
var fu = document.getElementById("book");
fu.appendChild(li);
创建新的文本节点
createTextNode():创建一个包含给定文本的新的文本节点,这个方法的返回值是一个指向新建文本节点的引用指针。
var textNode = document.createTextNode(text);
该方法只有一个参数,该参数是新建文本节点所包含的文本内容字符串。
返回是一个文本节点,所以他的nodeType属性值是3.
插入节点
appendChild():给给定元素节点添加一个子节点。
var refer = element.appendChild(newChild);
给定子节点 newChild 成为给定元素节点 elemnt 的最后一个子节点。
该方法的返回值是一个指向新增子节点的引用指针。
插入节点
insertBefore():把一个给定节点插入到给定元素节点的给定子节点的前面。
var refer = element.insertBefore(newNode,targetNode);
节点newChild 将会被插入到元素节点 element 中,并且会出现在节点 targetNode 的前面
节点targetNode 必须是 element 元素的子节点。
//创建一个新的节点<li id="java" value="java">java</li>
var li = document.createElement("li");
li.setAttribute("id", "java");
li.setAttribute("value", "java");
var txt = document.createTextNode("java");
li.appendChild(txt);
//将新创建的节点插入到<li id="javaee" value="javaee">javaee</li>的前面
var ul = document.getElementById("book");
var lii = document.getElementById("javaee");
ul.insertBefore(li, lii);
删除节点
removeChild():从一个给定元素中删除一个子节点
var refer = element.removeChild(node);
返回值是一个指向被删除的子节点的引用指针。
某个节点被removeChild方法删除时,这个节点所包含的所有子节点将同时被删除。
//删除<ul id="book">节点下面的<li id="javassh" value="javassh">javassh</li>节点
var li = document.getElementById("javassh");
var ul = document.getElementById("book");
ul.removeChild(li);
遍历节点
ChildNodes:返回一个数组,这个数组由给定元素节点的子节点构成
var nodeList = node.childNodes
文本节点和属性节点不可能在包含任何子节点,所以他们的ChildNodes属性永远返回一个空数组。
如果想指导某个元素有没有子节点,可以用ChildNodes
注意:ChildNodes 属性是一个只读属性
获取第一个子节点
firstChird:该属性返回一个给定元素节点的第一个子节点。返回的是这个节点对象的指针。
var reger = node.firstChild
文本节点和属性节点不可能在包含任何子节点,所以他们的firstChild属性永远返回 null。
node.firstChild = node.ChildNodes[0];
注意:firstChild 属性是一个只读属性
获取最后一个子节点
lastChild:
nextSibling:返回一个给定节点的下一个兄弟节点。
parentNode:返回一个给定节点的父亲节点,这个属性返回的节点永远是一个元素节点。
document 没有父节点
previousSibling: 返回一个给定节点的上一个兄弟节点。
innerHTML属性
不是dom 标准的组成部分
innerHTML 属性可以用来读,写某个给定元素里的html内容
//使用innerHTML读取id=div中的文本内容
/* var div = document.getElementById("div1");
alert(div.innerHTML); */
//把<p>东方闪电</p>写入div中
/* var div = document.getElementById("div1");
div.innerHTML = "<h1>东方闪电</h1>"; */
//alert(div.innerHTML);
dom是document object model文档对象模型的缩写。
d:文档- html文档 或 xml文档
o:对象-document 对象的属性和方法
m:模型
html文件加载到内存之后会形成一颗dom树,根据这些节点对象我们可以进行脚本代码的动态修改。
在dom树中一切皆为节点对象。
节点:
由结构图我们可以看出,整个文档就是一个文档节点。
每一个html标签都是一个元素节点
标签中的文字是文本节点
标签中的属性是属性节点
一切都是节点。。。
节点树:
我们从途中可以看出,最上面的就是树根,
节点之间有父子关系,子孙关系,兄弟关系。
直接连线的就是父子关系,
有一个父亲的就是兄弟关系。
dom中的方法和属性:
查找元素节点
getElementById():寻找一个有着给定id属性值的元素,返回值是一个有着给定id属性的元素节点。
如果不存在这样的元素,返回null
该方法只能用于document对象
<script type="text/javascript">
//输出<input type="text" name="userName" id="id1" value="momo"/>value属性的值
/* var inputNode = document.getElementById("id1");
alert(inputNode.value);
*/
//输出<input type="text" name="userName" id="id1" value="momo"/>type属性的值
var inputNode = document.getElementById("id2");
alert(inputNode.type);
查找元素节点
getElementsByName():寻找有着给定name属性的所有元素,这个方法返回一个节点集合,这个集合我们把它当做数组来处理,
这个集合的length属性等于当前文档中有着给定name属性的所有元素的总个数。
<script type="text/javascript">
//通过元素的name属性获取所有元素的节点
//var inputNodes = document.getElementsByName("userName");
//输出数组的长度
//alert(inputNodes.length);
//遍历元素,输出所有value属性的值
/* for(var i=0;i<inputNodes.length;i++){
var inputNode = inputNodes[i];
alert(inputNode.value);
} */
//为我们的每一个输入框添加onchange事件,当值改变时,输出改变后的值
var inputNodes = document.getElementsByName("userName");
for(var i=0;i<inputNodes.length;i++){
var inputNode = inputNodes[i];
inputNode.onchange = function(){
alert(this.value);
};
}
</script>
查找元素节点
getElementsByTagName():寻找有着给定标签名的所有元素,返回一个节点集合,把它当做数组来出来,
这个集合的length属性等于当前文档中有着给定标签名的所有元素的总个数
该方法不必非要用在整个文档上。可以用在某个特定元素的子节点当中寻找有着给定标签名的元素。
<script type="text/javascript">
//获取所有的input元素,返回值是一个数组
var inputNodes = document.getElementsByTagName("input");
//输出数组长度
//alert(inputNodes.length);
//遍历输出value值
/* for(var i=0;i<inputNodes.length;i++){
var inputNode = inputNodes[i];
alert(inputNode.value);
} */
//输出type="text"中value属性的值 不包含按钮(button)
/* for(var i=0;i<inputNodes.length;i++){
var inputNode = inputNodes[i];
if(inputNode.type=="text"){
alert(inputNode.value);
}
} */
//输出所有下拉框select的option标签中value的值
/* var optionNodes = document.getElementsByTagName("option");
for(var i=0;i<optionNodes.length;i++){
var optionNode = optionNodes[i];
alert(optionNode.value);
*/
//输出下拉菜单中id=sele1中option标签中value属性的值
/* var sele = document.getElementById("sele1");
var optionNodes = sele.getElementsByTagName("option");
for(var i=0;i<optionNodes.length;i++){
var optionNode = optionNodes[i];
alert(optionNode.value);
} */
//点击输出按钮,输出下拉框中被选中的值
var btn = document.getElementById("btn");
btn.onclick = function(){
var optionNodes = document.getElementsByTagName("option");
for(var i=0;i<optionNodes.length;i++){
var optionNode = optionNodes[i];
if(optionNode.selected){
alert(optionNode.value);
}
}
};
</script>
查看是否存在子节点
hasChildNodes();该方法是用来检查一个元素是否有子节点,返回值是 true 或 false
var booleanValue = element.hasChildNodes();
文本节点和属性节点不可能再包含任何子节点,所以这两种节点使用hasChildNodes()方法的返回值永远是false
如果hasChildNodes()方法的返回值是false,那么childNodes,firstChild, lastChild 将是空数组和空字符串
//查看id=sele1的节点时候含有子节点
var sele = document.getElementById("sele1");
alert(sele.hasChildNodes());
//查看id=id1的节点是否含有子节点
var int = document.getElementById("id1");
alert(int.hasChildNodes());
文档中的每个节点都有一下属性:
dom属性 - nodeName
nodeName:一个字符串,内容是给定节点的名字
var name = node.nodeName;
-如果节点是元素节点,nodeName返回的是这个元素的名称
-如果是属性节点,nodeName返回的是这个属性的名称
-如果是文本节点,nodeName返回的是一个内容为#text的字符串
注意:nodeName 是一个只读属性。
dom属性 - nodeType
nodeType 返回一个整数,这个数值代表着给定节点的类型。
nodeType 属性返回的整数值对应着节点的类型,常用的有三种:
Node.ELEMENT_NODE ---- 1 --- 元素节点
Node.ATTRIBUTE_NODE ---- 2 ---属性节点
Node.TEXT_NODE ------ 3 ---文本节点
注意:nodeType 是一个只读属性。
dom属性 - nodeValue
nodeValue 返回给定节点的当前值(字符串)
-如果给定节点是一个属性节点,返回值是这个属性的值
-如果给定节点是一个文本节点,返回值是这个文本节点的内容
-如果给定节点是一个元素节点,返回值是null
注意:nodeValue 是一个 读/写 属性,但是不能对元素节点的 nodeVale 属性设置值。
可以为文本节点的 nodeValue属性设置一个值。
var node = document.getElementById("pid");
if(node.firstChild.nodeType==3){
node.firstChild.nodeValue="大宝";
alert(node.firstChild.nodeValue);
}
<script type="text/javascript">
//获得id=id1的元素节点,输出 nodeName,nodeType,nodeVale
/* var node = document.getElementById("id1");
alert(node.nodeName);//input
alert(node.nodeType);//1
alert(node.nodeValue);//null */
//获得id=pid的文本节点,输出nodeName,nodeType,nodeVale
/* var node = document.getElementById("pid");
var textnode = node.firstChild;
alert(textnode.nodeName);//#text
alert(textnode.nodeType);//3
alert(textnode.nodeValue);//大家好才是真的好!广州好迪! */
//获得id=pid的属性节点,输出nodeName,nodeType,nodeVale
var node = document.getElementById("pid");
var p = node.getAttributeNode("id");
alert(p.nodeName);//id
alert(p.nodeType);//2
alert(p.nodeValue);//pid
</script>
替换节点
replaceChild():把一个给定父元素的一个子节点替换成另外一个子节点
var reger = element.replaceChild(newChild,oldChild);
<script type="text/javascript">
//点击某一个节点,替换成例外一个节点
var lol = document.getElementById("lol");
var javase = document.getElementById("javase");
lol.onclick = function(){
var parentNode = this.parentNode;
parentNode.replaceChild(javase,this);
};
</script>
查找属性值
getAttribute():返回一个给定元素的一个给定属性节点的值
var arrtibuteValue = element.getAttribute(attributeName);
给定属性的名字必须以字符串的形式传递给该方法
给定属性的值将以字符串的形式返回,如果给定属性不存在,那么该方法返回一个空字符串。
//获取<li id="javase" value="javase">javase</li>节点的value属性的值
/* var elementNode = document.getElementById("javase");
var str = elementNode.getAttribute("value");
alert(str); */
设置属性节点
setAttribute():将给定元素节点添加一个新的属性值或者改变它现有的属性值
element.setAttribute(attributeName,attributeValue);
属性的名字和属性值必须以字符串的形式传递给该方法。
如果这个属性已经存在,它的值就会被刷新
如果不存在,该方法会先创建该属性在为它赋值
//给<li id="lol" value="lol">lol</li>这个节点添加name属性,
var element = document.getElementById("lol");
element.setAttribute("name", "英雄联盟");
element.setAttribute("name", "王者荣耀");
alert(element.getAttribute("name"));
创建新的元素节点
createElement():按照给定的标签名创建一个新的元素节点。该方法只有一个参数,将要被创建的元素的名字,是一个字符串。
var reference = document.createElement(element);
该方法的返回值是一个指向新创建的节点的引用指针。返回是一个元素节点,所以他的nodeType属性值是1.
/* var li = document.createElement("li");
li.setAttribute("id", "kuihuabaodian");
li.setAttribute("value", "kuihuabaodian");
var text = document.createTextNode("葵花宝典");
li.appendChild(text);
var fu = document.getElementById("book");
fu.appendChild(li);
创建新的文本节点
createTextNode():创建一个包含给定文本的新的文本节点,这个方法的返回值是一个指向新建文本节点的引用指针。
var textNode = document.createTextNode(text);
该方法只有一个参数,该参数是新建文本节点所包含的文本内容字符串。
返回是一个文本节点,所以他的nodeType属性值是3.
插入节点
appendChild():给给定元素节点添加一个子节点。
var refer = element.appendChild(newChild);
给定子节点 newChild 成为给定元素节点 elemnt 的最后一个子节点。
该方法的返回值是一个指向新增子节点的引用指针。
插入节点
insertBefore():把一个给定节点插入到给定元素节点的给定子节点的前面。
var refer = element.insertBefore(newNode,targetNode);
节点newChild 将会被插入到元素节点 element 中,并且会出现在节点 targetNode 的前面
节点targetNode 必须是 element 元素的子节点。
//创建一个新的节点<li id="java" value="java">java</li>
var li = document.createElement("li");
li.setAttribute("id", "java");
li.setAttribute("value", "java");
var txt = document.createTextNode("java");
li.appendChild(txt);
//将新创建的节点插入到<li id="javaee" value="javaee">javaee</li>的前面
var ul = document.getElementById("book");
var lii = document.getElementById("javaee");
ul.insertBefore(li, lii);
删除节点
removeChild():从一个给定元素中删除一个子节点
var refer = element.removeChild(node);
返回值是一个指向被删除的子节点的引用指针。
某个节点被removeChild方法删除时,这个节点所包含的所有子节点将同时被删除。
//删除<ul id="book">节点下面的<li id="javassh" value="javassh">javassh</li>节点
var li = document.getElementById("javassh");
var ul = document.getElementById("book");
ul.removeChild(li);
遍历节点
ChildNodes:返回一个数组,这个数组由给定元素节点的子节点构成
var nodeList = node.childNodes
文本节点和属性节点不可能在包含任何子节点,所以他们的ChildNodes属性永远返回一个空数组。
如果想指导某个元素有没有子节点,可以用ChildNodes
注意:ChildNodes 属性是一个只读属性
获取第一个子节点
firstChird:该属性返回一个给定元素节点的第一个子节点。返回的是这个节点对象的指针。
var reger = node.firstChild
文本节点和属性节点不可能在包含任何子节点,所以他们的firstChild属性永远返回 null。
node.firstChild = node.ChildNodes[0];
注意:firstChild 属性是一个只读属性
获取最后一个子节点
lastChild:
nextSibling:返回一个给定节点的下一个兄弟节点。
parentNode:返回一个给定节点的父亲节点,这个属性返回的节点永远是一个元素节点。
document 没有父节点
previousSibling: 返回一个给定节点的上一个兄弟节点。
innerHTML属性
不是dom 标准的组成部分
innerHTML 属性可以用来读,写某个给定元素里的html内容
//使用innerHTML读取id=div中的文本内容
/* var div = document.getElementById("div1");
alert(div.innerHTML); */
//把<p>东方闪电</p>写入div中
/* var div = document.getElementById("div1");
div.innerHTML = "<h1>东方闪电</h1>"; */
//alert(div.innerHTML);
阅读全文
0 0
- DOM知识块的笔记总结
- DOM知识总结
- DOM知识总结
- 学习笔记-JavaScript系列之DOM节点知识总结
- android开发知识块总结
- 黑马程序员--代码块小知识总结
- WIFI模知识块的
- web前端知识总结-BOM和DOM
- 关于dom简单的知识
- 原生DOM知识的积累
- JS中的DOM相关知识复习笔记
- servlet知识总结笔记
- DOM模型--简单的颜色块显示
- DOM的思考总结
- DOM知识
- DOM知识
- DOM的学习笔记
- DOM的学习笔记
- IncompatibleClassChangeError
- numpy方法总结
- 回溯法
- Android热补丁动态修复技术(一):从Dex分包原理到热补丁
- Error:Execution failed for task ':protectParentClient2:processDebugManifest'. > Manifest merger fail
- DOM知识块的笔记总结
- Tokenization in C++11
- Spring定时任务的几种实现
- python 类的继承与重载
- vue与angular和react框架原理对比小结及兼容性
- RecyclerView最佳实践
- 碎片化自我提升:为大学生推荐的优质APP
- 软件设计的切入点是什么?如何从最初的需求提取出一个粗粒度的软件结构?
- Vuforia AR SDK使用入门