




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
东北石油大学计算机与信息技术学院李勇勇DOM1DOM:Document Object Model(文本对象模型)D:文档 html 文档 或 xml 文档O:对象 document 对象的属性和方法M:模型 DOM 是针对xml(html)的基于树的API。DOM树:节点(node)的层次。DOM 把一个文档表示为一棵家谱树(父,子,兄弟)DOM定义了Node的接口以及许多种节点类型来表示XML节点的多个方面2. 节点及其类型节点(node):来源于网络理论,代表网络中的一个连接点。网络是由节点构成的集合3. Node接口的特性和方法4. 查找元素节点getElementById() 寻找一个有着给定 id 属性值的元素,返回值是一个有着给定 id 属性值的元素节点。如果不存在这样的元素,它返回 null。 var element = document.getElementById(ID);该方法只能用于 document 对象getElementsByTagName()寻找有着给定标签名的所有元素,这个方法将返回一个节点集合,这个集合可以当作一个数组来处理。这个集合的 length 属性等于当前文档里有着给定标签名的所有元素的总个数。 var elements = element.getElementsByTagName(tagName);该方法不必非得用在整个文档上。它也可以用来在某个特定元素的子节点当中寻找有着给定标签名的元素。 var container = document.getElementById(“content”); var paras = container.getElementsByTagName(“p”); alert(paras.length);5. 查看是否存在子节点hasChildNodes()该方法用来检查一个元素是否有子节点,返回值是 true 或 false. var booleanValue = element.hasChildNodes();文本节点和属性节点不可能再包含任何子节点,所以对这两类节点使用 hasChildNodes 方法的返回值永远是 false.如果 hasChildNodes 方法的返回值是 false,则 childNodes,firstChild,lastChild 将是空数组和空字符串。6. DOM 属性 nodeName文档里的每个节点都有以下属性。nodeName:一个字符串,其内容是给定节点的名字。 var name = node.nodeName;如果给定节点是一个元素节点或属性节点,nodeName 属性将返回这个元素的名字。如果给定节点是一个文本节点,nodeName 属性将返回内容为 #text 的字符串。nodeName 是一个只读属性。7. DOM 属性 nodeTypenodeType:返回一个整数,这个数值代表着给定节点的类型。nodeType 属性返回的整数值对应着 12 种节点类型:Node.ELEMENT_NODE (1) - 元素节点Node.ATTRIBUTE_NODE (2) - 属性节点Node.TEXT_NODE (3) - 文本节点nodeType 是个只读属性8. DOM 属性 nodeValuenodeValue:返回给定节点的当前值(字符串) 如果给定节点是一个属性节点,返回值是这个属性的值。 如果给定节点是一个文本节点,返回值是这个文本节点的 内容。 如果给定节点是一个元素节点,返回值是 null nodeValue 是一个 读/写 属性,但不能对元素节点的 nodeValue 属性设置值,但可以为文本节点的 nodeValue 属性设置一个值。 var message = document.getElementById(“fineprint”); if(message.firstChild.nodeType = 3) message.firstChild.nodeValue = “this might work”;9. 替换节点replaceChild()把一个给定父元素里的一个子节点替换为另外一个子节点var reference = element.replaceChild(newChild,oldChild);返回值是一个指向已被替换的那个子节点的引用指针。如果被插入的子节点还有子节点,则那些子节点也被插入到目标节点中 var container = document.getElementById(“content”); var message = document.getElementById(“fineprint”); var announcement = document.getElementById(“headline”); var oldmessage = container.replaceChild(announcement,message); container.appendChild(oldmessage);10. 查找属性节点getAttribute()返回一个给定元素的一个给定属性节点的值var attributeValue = element.getAttribute(attributeName);给定属性的名字必须以字符串的形式传递给该方法。给定属性的值将以字符串的形式返回,如果给定属性不存在,getAttribute() 将返回一个空字符串.11. 设置属性节点setAttribute()将给定元素节点添加一个新的属性值或改变它的现有属性的值。 element.setAttribute(attributeName,attributeValue);属性的名字和值必须以字符串的形式传递给此方法如果这个属性已经存在,它的值将被刷新;如果不存在,setAttribute()方法将先创建它再为其赋值。 var para = document.createElement(“p”); para.setAttribute(“id”,”fineprint”); var container = document.getElementById(“content”); container.appendChild(para);12. 创建新元素节点createElement()按照给定的标签名创建一个新的元素节点。方法只有一个参数:将被创建的元素的名字,是一个字符串. var reference = document.createElement(element);方法的返回值:是一个指向新建节点的引用指针。返回值是一个元素节点,所以它的 nodeType 属性值等于 1。新元素节点不会自动添加到文档里,新节点没有 nodeParent 属性,它只是一个存在于 JavaScript 上下文的对象.var oP = document.createElement(p);13.创建新文本节点createTextNode()创建一个包含着给定文本的新文本节点。这个方法的返回值是一个指向新建文本节点引用指针。 var reference = document.createTextNode(text);方法只有一个参数:新建文本节点所包含的文本字符串方法的返回值:是一个指向新建节点的引用指针。它是一个文本节点,所以它的 nodeType 属性等于 3.新元素节点不会自动添加到文档里,新节点没有 nodeParent 属性 var oText = document.createTextNode(“Hello World”);14. 插入节点(1)appendChild()为给定元素增加一个子节点: var reference = element.appendChild(newChild). 给定子节点 newChild 将成为给定元素节点 element 的最后一个子节点。方法的返回值是一个指向新增子节点的引用指针。该方法通常与 createElement() createTextNode() 配合使用 var para = document.createElement(“p”); var message = document.createTextNode(“Hello World”); para.appendChild(message); document.body.appendChild(para);新节点可以被追加给文档中的任何一个元素insertBefore()把一个给定节点插入到一个给定元素节点的给定子节点的前面 var reference = element.insertBefore(newNode,targetNode); 节点 newNode 将被插入到元素节点 element 中并出现在节点 targetNode 的前面.节点 targetNode 必须是 element 元素的一个子节点。该方法通常与 createElement() 和 createTextNode() 配合使用 var container = document.getElementById(“content”); var message = document.getElementById(“fineprint”); var para = document.createElement(“p”); container.insertBefore(para,message);15. 删除节点removeChild()从一个给定元素里删除一个子节点 var reference = element.removeChild(node);返回值是一个指向已被删除的子节点的引用指针。某个节点被 removeChild() 方法删除时,这个节点所 包含的所有子节点将同时被删除。 var container = document.getElementById(“content”); var message = document.getElementById(“fineprint”); container.removeChild(message);如果想删除某个节点,但不知道它的父节点是哪一个,parentNode 属性可以帮忙。 var message = document.getElementById(“fineprint”); var container = message.parentNode; container.removeChild(message);16. 遍历节点树ChildNodes:返回一个数组,这个数组由给定元素节点的子节点构成:var nodeList = node.childNodes;文本节点和属性节点都不可能再包含任何子节点,所以它们的 ChildNodes 属性永远会返回一个空数组。如果想知道某个元素有没有子节点,可以用 hasChildNodes 方法。如果想知道某个元素有多少个子节点,可以用 childNodes 数组的 length 属性。childNodes 属性是一个只读属性。17. 获取第一个子节点firstChild:该属性返回一个给定元素节点的第一个子节点,返回这个节点对象的指针。 var reference = node.firstChild;文本节点和属性节点都不可能包含任何子节点,所以它们的 firstChild 属性永远会返回 null。某个元素的 firstChild 属性等价于这个元素的 childNodes 节点集合中的第一个节点,即: var reference = node.ChildNodes0;firstChild 属性是一个只读属性。18.获取最后一个子节点lastChild:对应 firstChild 的一个属性。nextSibling: 返回一个给定节点的下一个子节点。parentNode:返回一个给定节点的父节点。parentNode 属性返回的节点永远是一个元素节点,因为只有元素节点才有可能包含子节点。document 节点的没有父节点。previousSibling:返回一个给定节点的上一个子节点19. innerHTML属性浏览器几乎都支持该属性,但不是 DOM 标准的组成部分。innerHTML 属性可以用来读,写某给定元素里的 HTML 内容。1. 节点及其类型:1). 元素节点2). 属性节点: 元素的属性, 可以直接通过属性的方式来操作. 3). 文本节点: 是元素节点的子节点, 其内容为文本. 2. 在 html 文档的什么位置编写 js 代码?0). 直接在 html 页面中书写代码.Click Me!缺点: . js 和 html 强耦合, 不利用代码的维护. 若 click 相应函数是比较复杂的, 则需要先定义一个函数, 然后再在 onclick 属性中完成对函数的引用, 比较麻烦1). 一般地, 不能在 body 节点之前来直接获取 body 内的节点, 因为此时 html 文档树还没有加载完成, 获取不到指定的节点:Untitled Documentvar cityNode = document.getElementById(city);/打印结果为 null.alert(cityNode);2). 可以在整个 html 文档的最后编写类似代码, 但这不符合习惯3). 一般地, 在 body 节点之前编写 js 代码, 但需要利用 window.onload 事件, 该事件在当前文档完全加载之后被触发, 所以其中的代码可以获取到当前文档的任何节点.Untitled Documentwindow.onload = function()var cityNode = document.getElementById(city);alert(cityNode);3. 如何来获取元素节点:1). *document.getElementById: 根据 id 属性获取对应的单个节点2). *document.getElementsByTagName: 根据标签名获取指定节点名字的数组, 数组对象 length 属性可以获取数组的长度3). document.getElementsByName: 根据节点的 name 属性获取符合条件的节点数组, 但 ie 的实现方式和 W3C 标准有差别: 在 html 文档中若某节点(li)没有 name 属性,则 ie 使用 getElementsByName 不能获取到节点数组, 但火狐可以. 4). 其它的两个方法,ie 根本就不支持, 所以不建议使用 4. 获取属性节点:1). *可以直接通过 cityNode.id 这样的方式来获取和设置属性节点的值2). 通过元素节点的 getAttributeNode 方法来获取属性节点,然后在通过 nodeValue 来读写属性值 5. 获取元素节点的子节点(*只有元素节点才有子节点!):1). childNodes 属性获取全部的子节点, 但该方法不实用. 因为如果要获取指定的节点的指定子节点的集合, 可以直接调用元素节点的 getElementsByTagName() 方法来获取. 2). firstChild 属性获取第一个子节点3). lastChild 属性获取最后一个子节点6. 获取文本节点:1). 步骤: 元素节点 - 获取元素节点的子节点2). 若元素节点只有文本节点一个子节点, 例如 北京, 你喜欢哪个城市?, 可以先获取到指定的元素节点 eleNode, 然后利用 eleNode.firstChild.nodeValue 的方法来读写其文本节点的值7. 节点的属性:1). nodeName: 代表当前节点的名字. 只读属性. *如果给定节点是一个文本节点, nodeName 属性将返回内容为 #text 的字符串2). nodeType:返回一个整数, 这个数值代表着给定节点的类型. 只读属性. 1 - 元素节点, 2 - 属性节点, 3 - 文本节点 *3). nodeValue:返回给定节点的当前值(字符串). 可读写的属性. 元素节点, 返回值是 null. 属性节点: 返回值是这个属性的值. 文本节点: 返回值是这个文本节点的内容8. 创建一个元素节点:1). createElement(): 按照给定的标签名创建一个新的元素节点. 方法只有一个参:被创建的元素节点的名字, 是一个字符串.方法的返回值:是一个指向新建节点的引用指针. 返回值是一个元素节点, 所以它的 nodeType 属性值等于 1.*新元素节点不会自动添加到文档里, 它只是一个存在于 JavaScript 上下文的对象.9. 创建一个文本节点:1). createTextNode(): 创建一个包含着给定文本的新文本节点. 这个方法的返回值是一个指向新建文本节点引用指针. 它是一个文本节点, 所以它的 nodeType 属性等于 3.方法只有一个参数:新建文本节点所包含的文本字符串. 新元素节点不会自动添加到文档里10. 为元素节点添加子节点:1). appendChild(): var reference = element.appendChild(newChild): 给定子节点 newChild 将成为给定元素节点 element 的最后一个子节点.方法的返回值是一个指向新增子节点的引用指针. 11. 节点的替换:1). replaceChild(): 把一个给定父元素里的一个子节点替换为另外一个子节点var reference = element.replaceChild(newChild,oldChild);返回值是一个指向已被替换的那个子节点的引用指针2). 该节点除了替换功能以外还有移动的功能. 3). 该方法只能完成单向替换, 若需要使用双向替换, 需要自定义函数:/* * 互换 aNode 和 bNode * param Object aNode * param Object bNode */function replaceEach(aNode, bNode)if(aNode = bNode)return;var aParentNode = aNode.parentNode;/若 aNode 有父节点if(aParentNode)var bParentNode = bNode.parentNode;/若 bNode 有父节点if(bParentNode)var tempNode = aNode.cloneNode(true);bParentNode.replaceChild(tempNode, bNode);aParentNode.replaceChild(bNode, aNode); 12. 插入节点:1). insertBefore(): 把一个给定节点插入到一个给定元素节点的给定子节点的前面 v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年消防安全知识培训考试题库(消防设施操作)消防设施维护保养试题
- 2025年中学教师资格考试《综合素质》教育理念辨析模拟考试试题(含答案)
- 2025年摄影师职业技能鉴定试卷:摄影作品编辑与排版试题
- 2025年花艺师职业资格考试真题模拟训练:花卉行业法律法规与政策试题
- 2025广西退役军人医院招聘1人考试备考题库及答案解析
- 2025北京门头沟区卫生健康系统下半年事业单位招聘卫生专业技术人员101人备考题库及答案解析
- 2025广东惠州市龙门县龙江镇招聘村(社区)“两委”干部储备人选11人笔试模拟试题及答案解析
- 2025湖南娄底市新化县城区缺员学校暨农村高中学校选调教师410人备考试题及答案解析
- 2025广西崇左市江州区农业农村局招聘1人备考试题及答案解析
- 2025年宁夏回族自治区残疾人康复中心宁夏康复医院第二批公开招聘合同制工作人员笔试备考试题及答案解析
- 中枢神经系统药理学概论课件
- DB65-T 4773-2024 生物安全实验室消毒技术指南
- 成人体外膜氧合辅助期间感染防控专家共识2024版
- 2024年河北石家庄市井陉矿区人力资源和社会保障局公益性岗位招聘100人历年(高频重点提升专题训练)共500题附带答案详解
- 优化方案语文必修上册
- 云南省大中型水电站情况表
- 旅游景区规划设计方案
- 高中历史知识竞赛省公开课一等奖全国示范课微课金奖课件
- DL-T 5117-2021水下不分散混凝土试验规程-PDF解密
- 铁路专用线设计规范(试行)(TB 10638-2019)
- 国家药政法规培训
评论
0/150
提交评论