web 学习笔记5-DOM以及节点的操作
2017-05-08 22:17
513 查看
1、Dom概述:
2、结点的属性:
3、结点的分类:
4、结点的关系:
5、属性节点的操作:
6、拿取标签节点的方法:3种
7、拿到文本节点内容的两种方法:
8、标签节点的属性:(已有的知识)
9、获取下拉框文本的值:(已有的知识)
以下是节点的增删改查,非常重要
10、替换节点:
11、添加节点:
12、删除结点:
简单的总结:
在javascript中想调用html代码: 只能通过属性innerHTML
在javascript中想调用CSS代码: 只能通过属性clasName可以调用样式表
.style.属性
DOM:docuemnt object model 文档对象模型 作用:重构整个 HTML 文档。可以添加、移除、改变或重排页面上的项目 Core DOM : 定义了一套标准的针对任何结构化文档的对象 XML DOM : 定义了一套标准的针对 XML 文档的对象 HTML DOM : 定义了一套标准的针对 HTML 文档的对象。 xml:expensible markup language : 可扩展标记语言。 例如一个简单的xml <penson> <name>张三</name> <age>23</age> </person>
2、结点的属性:
a. nodeName(节点名称) 元素节点的 nodeName 是标签名称 属性节点的 nodeName 是属性名称 文本节点的 nodeName 永远是 #text 文档节点的 nodeName 永远是 #document b. nodeValue(节点值) 对于文本节点,nodeValue 属性包含文本。 对于属性节点,nodeValue 属性包含属性值。 注意:nodeValue 属性对于文档节点和元素节点是不可用的。 c. nodeType(节点类型) : nodeType 属性可返回节点的类型。 标签节点的类型值是 1 属性节点的类型值是 2 文本节点的类型值是 3 简单的例子: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus?"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>DOM节点的属性</title> </head> <body> <p id = "p">hello</p> <script type="text/javascript"> <!-- var p = document.getElementById("p") ; alert(p.nodeName + " :" + p.nodeValue + ":" + p.nodeType) ; //--> </script> </body> </html> 运行的结果是:P:null:1 (因为p是一个元素节点,所以没有nodeValue)
3、结点的分类:
a、整个文档是一个文档节点 b、每个 XML 标签是一个元素节点 c、包含在 XML 元素中的文本是文本节点 d、每一个 XML 属性是一个属性节点 e、注释属于注释节点
4、结点的关系:
只有父子和兄弟关系 parentNode : 父节点 childNodes :所有的子标签 firstChild :第一个子节点 lastChild :最后一个子节点 nextSibling :下一个兄弟节点 previousSibling : 上一个兄弟节点 简单的例子:节点之间的导航 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus?"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>节点导航</title> </head> <body> <table> <tr> <td>张三/td> <td>男</td> <td>50</td> </tr> <tr> <td>李四</td> <td>男</td> <td>60</td> </tr> <tr> <td>王五</td> <td>男</td> <td>20</td> </tr> </table> <script type="text/javascript"> //示例: 拿到王五的年龄 //拿到根节点 var root = document.documentElement ; //alert(root.nodeName) ; //拿到body节点 var body = root.lastChild ; //alert(body.nodeName) ; //拿到table节点 var table = body.firstChild ; //拿到tbody节点 var tbody = table.firstChild ; //拿到成龙的年龄 var age = tbody.firstChild.nextSibling.lastChild.firstChild.nodeValue ; alert(age); </script> </body> </html>
5、属性节点的操作:
<body> <input type="text" name="name" id = "txt"> <script type="text/javascript"> <!-- //拿到文本框对象 var txt = document.getElementById("txt") ; //拿到属性节点 var atts = txt.attributes ; //拿到name属性的值 //alert(atts[1].nodeValue) ; for(var i = 0 ;i<atts.length ;i++){ alert(atts[i].nodeName + ":" + atts[i].nodeValue) ; } //--> </script> </body> 运行的结果:type:text name:name id:txt
6、拿取标签节点的方法:3种
getElementById() : 根据标签的ID拿到此标签节点 getElementsByTagName() : 根据标签的名字拿到此标签节点数组 getElementsByName(): 适用于表单控件。根据标签的name属性值拿到控件的数组。 <body> <p name = "p">hello</p> <input type="text" name="username"><br> <input type="text" name="username"><br> <input type="text" name="username"><br> <script type="text/javascript"> <!-- //第一种方法:给节点设置id,采用document.getElementById() //第二种方法 //document.getElementsByName: 只能用于表单对象 var p = document.getElementsByName("p") ; alert(p.length) ; //拿不到 var inputs = document.getElementsByName("username") ; alert(inputs.length) ; inputs[1].value = "你好" ;//在第二个输入框里面显示了你好 //第三种方式 var ps = document.getElementsByTagName("p") ; alert(ps.length) ;//1 alert(ps[0].firstChild.nodeValue) ;//弹出hello提示,firstChild就是拿到了hello这个文本节点 //--> </script> </body>
7、拿到文本节点内容的两种方法:
document.getElementById("h1") document.getElementsByTagName("h1") 简单的示例; <body> <h1 id = "h1">文本内容</h1> <script type="text/javascript"> <!-- //示例: 拿到文本内容的文本 //第一种方法,亲测可以正常弹出 var h1 = document.getElementById("h1") ; alert(h1.firstChild.nodeValue); //第二种方式 var h1 = document.getElementsByTagName("h1") ; alert(h1[0].innerHTML) ; lert(h1[0].innerText) ; //--> </script> </body>
8、标签节点的属性:(已有的知识)
主要是学习逻辑判断节点的类型,childNodes 的使用 <body> <ul> <li id="bj" value="beijing"> 北京 <h1>海淀</h1> 奥运 </li> <li id="sh" value="shanghai"> 上海 </li> <br/> <input type="button" value="li取值" onclick="getLi()"/> </ul> <script type="text/javascript"> <!-- function getLi(){ //拿到北京节点 var li = document.getElementById("bj") ; //拿到北京节点的所有儿子 var childs = li.childNodes ; for(var i = 0 ; i<childs.length ;i++){ //alert(childs[i].nodeName + ":" + childs[i].nodeValue + ":" + childs[i].nodeType ) ; if(childs[i].nodeType == 1){//判断是不是一个标签节点,如果是就取标签节点下的第一个子节点 alert(childs[i].firstChild.nodeValue) ; }else{ alert(childs[i].nodeValue) ;//不是标签节点,可以看到就是文本节点了,直接就弹出文本的值 } } } //--> </script> </body>
9、获取下拉框文本的值:(已有的知识)
<body> <select name="edu" id="edu"> <option value="本科">本科</option> <option value="专科">专科</option> <option value="高中">高中</option> <option value="小学">小学</option> <option value="幼儿园">幼儿园</option> </select> <script type="text/javascript"> <!-- var ops = document.getElementsByTagName("option") ;//获取所有的option标签节点 for(var i =0 ; i<ops.length ;i++){ //alert(ops[i].text) ;//也可以正常弹出来 alert(ops[i].innerHTML) ; } //--> </script> </body>
以下是节点的增删改查,非常重要
10、替换节点:
replaceNode(): 替换节点(适用于IE) replaceChild() : 替换子节点 简单的示例: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus?"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>替换节点的操作</title> </head> <script type="text/javascript"> <!-- //将北京替换为打麻将 function changeNode(){ //拿到北京节点 var bjNode = document.getElementById("bj"); //拿到打麻将对象 var gameNode = document.getElementById("game"); //替换 //bjNode.replaceNode(gameNode) ; //bjNode.parentNode.replaceChild(gameNode,bjNode) ; //克隆一份打麻将 var node = gameNode.cloneNode(true) ; bjNode.parentNode.replaceChild(node,bjNode) ;//注意使用克隆的节点,如果直接使用gameNode的节点,则gameNode的节点就会消失 } //--> </script> <body> <ul > <li id="bj" onclick="changeNode()">北京</li> <li>山东</li> </ul> <ul> <li id="game">打<p>麻将</p></li> <li>斗地主</li> </ul> </body> </html>
11、添加节点:
创建节点: document.createElement() : 创建一个标签节点 docuemnt.createTextNode("内容") :创建一个文本节点 节点的setAttribute() :添加属性节点 添加结点: appendChild() : 添加子节点 示例:添加下拉框选项 <script type="text/javascript"> <!-- function addOptions(){ //创建一个新的节点 //第一种方式 var option = document.createElement("option") ; option.value = "小学" ;//单独写这个,在浏览器中添加会出现空的,显示不了 option.text = "小学" ;//单独写这个,测试正常。所以俩个一起写 //拿到下拉框,加入小学 document.getElementsByTagName("select")[0].options.add(option) ; //第二种方式,直接添加一个html代码 //获得select对象 var select = document.getElementsByTagName("select")[0] ; select.innerHTML = select.innerHTML + "<option value = '小学'>小学</option>" ; //第三种,使用appendChild var option = document.createElement("option") ; option.value = "小学" ; option.text = "小学" ; //获得select对象 var select = document.getElementsByTagName("select")[0] ; select.appendChild(option); } function fun(){ //拿到div对象 var d = document.getElementById("d") ; //创建一个img标签对象 var img = document.createElement("img") ; //指定属性 img.src = "images/1.jpg" ;//前提是当前目录有这个图片 img.style.width = "200px" ; img.height = "300" ; //将图片添加到div标签中 d.appendChild(img) ; } //--> </script> <body> <input type="button" value="添加选项" onclick="addOptions()"/> <input type="button" value="添加一副图片" onclick="fun()"> <select> <option>本科</option> <option>专科</option> <option>高中</option> <option>初中</option> </select> <div id = "d"></div> </body>
12、删除结点:
removeChild() : 采用父节点删除子节点 例如: function delTr(btn){ var btnTd = document.createElement("td") ; btnTd.innerHTML = "<button onclick = 'delTr(this)'>删除</button>" ;//这个this代表是这个按钮标签自己, //删掉表格的行 //采用removeChild() //父亲(tbody)干掉儿子(tr) //拿到曾爷爷 var tbody = btn.parentNode.parentNode.parentNode ; //拿到爷爷 var tr = btn.parentNode.parentNode ; //曾爷爷干掉爷爷 tbody.removeChild(tr); } 一个全选和全不选的示例: <script type="text/javascript"> <!-- function checkAll(flag){ //拿到所有的多选框 var hobbys = document.getElementsByName("hobby") ; //循环赋值 for(var i =0 ;i<hobbys.length ;i++){ hobbys[i].checked = flag ; } } function reverseCheck(){ //拿到所有的多选框 var hobbys = document.getElementsByName("hobby") ; //循环赋值 for(var i =0 ;i<hobbys.length ;i++){ hobbys[i].checked = !hobbys[i].checked ; } } //--> </script> <body> <h1>请选择你的爱好:</h1> 全选/全不选<input type="checkbox" name="hobbys" onclick="checkAll(this.checked)" /><br/> <input type="checkbox" name="hobby" value="football"/>足球 <input type="checkbox" name="hobby" value="basketball" />篮球 <input type="checkbox" name="hobby" value="swim" />游泳 <input type="checkbox" name="hobby" value="singing"/>唱歌<br/> <input type="button" value="全选" onclick="checkAll(true)"/> <input type="button" value="全不选" onclick="checkAll(false)"/> <input type="button" value="反选" onclick="reverseCheck()"/> </body> </body>
简单的总结:
在javascript中想调用html代码: 只能通过属性innerHTML
在javascript中想调用CSS代码: 只能通过属性clasName可以调用样式表
.style.属性
相关文章推荐
- 【学习笔记】DOM中的节点操作函数以及属性
- javascript学习笔记:DOM节点关系和操作
- JavaScript DOM学习笔记5——创建和操作节点
- 学习JS中的DOM节点以及操作
- web进阶之jQuery操作DOM元素&&MySQL记录操作&&PHP面向对象学习笔记
- jQuery学习笔记(三)——DOM节点操作
- JavaScript DOM学习笔记5――创建和操作节点
- JavaScript DOM学习笔记1――DOM节点层次
- 学习笔记:jdbc连接、操作数据库SQL Server 2008 ——MyEclipse web示例
- jQuery 学习笔记之六 (jQuery DOM的操作)
- learning jQuery 学习笔记十(+jQuery 1.4.1 API)-- DOM操作-基于命令改变页面 ----插入新元素
- learning jQuery 学习笔记九(+jQuery 1.4.1 API)-- DOM操作-基于命令改变页面 ----操作属性
- javascript 学习笔记(一)DOM基本操作
- jQuery 学习笔记一(认识jQuery jQuery选择器 jQuery中的DOM操作)
- SilverLight学习笔记--Silverlight中操作DOM元素
- jQuery学习笔记[1] jQuery中的DOM操作
- learning jQuery 学习笔记十一(+jQuery 1.4.1 API)-- DOM操作-基于命令改变页面 ----移动元素
- 学习笔记:使用Web Service Software Factory开发简易留言本服务以及Mobile调用实现-1.创建Service
- web中的cookies以及作用--web testing 学习笔记
- jQuery学习笔记[1] jQuery中的DOM操作