当前位置: 首页 > Web前端 > HTML5

DOM【简介,HTML中的DOM,XML中的DOM】

时间:2023-04-05 01:38:10 HTML5

什么是DOM?DOM(文档对象模型)是一种与语言和平台无关的接口。.允许程序和脚本动态访问和更新文档的内容。为什么要使用DOM?Dom技术使用户页面可以动态变化,如动态显示或隐藏元素、改变其属性、添加元素等。Dom技术极大地增强了页面的交互性。HTMLDOMHTMLDOM是一棵内存对象树,在浏览器中只保存一份,HTMLDOM修改HTML内容会直接在浏览器中体现APINODE对象API在DOM看来,HTML是由不同类型的节点组成的,这些节点都是属性节点对象。NODE对象有一个nodeType属性,可用于确定节点类型HTML。不同类型的节点是有关联的:一个节点上面的节点是该节点的父节点,该节点下面的节点是该节点的子节点(children)处于同一层级,父节点相同的节点是兄弟节点(sibling)。一个节点的下一级节点集是该节点的后代(descendant)父节点、祖父节点以及该节点之上的所有节点。所以NODE对象也有访问节点的属性和方法属性:一般来说:获取节点信息(节点名,节点值)和访问节点的兄弟父类方法:一般来说:添加,替换,删除子节点,判断是否有子节点,clone子节点documentHTML的DOM,我们提到并使用了很多Javascirpt的内置对象,document,注意这个对象只能代表HTML的根节点。文档属性:documentElement【可以获取节点】文档方法:createElement()【创建元素节点】createComment()【创建注释】createAttribute()【创建属性节点】createTextNode()【创建文本节点】getElementById()【通过id获取元素节点】getElementsByTagName()【通过标签名获取所有标签名的数组】Element接口Element代表元素节点,是我们经常用到的一个接口!元素属性:tagName[返回元素标签的大写名称]元素方法:getAttribute(Stringname)[获取属性的值]setAttribute(Stringname,Stringvalue)[设置属性的名称和值,创建它如果不存在]getElementsByTabName()【返回元素节点的后代节点数组】removeAttribute()【移除属性】我们设置属性的时候不会调用方法来设置,但是我们经常这样做:varinput=document.createElement("输入");input.value="aa";input.name="bb";XMLDOM我们可以使用XML文件作为客户端和服务器之间的传输文件。所以我们需要学习在JavaScript代码中通过DOM操作XML文档。XML和HTML的API很相似,这里就不赘述了。如果XML客户端和服务器通过XML文件或XML字符串与数据交互,则加载它们。那么,我们需要将服务器的XML文件或XML字符串加载到JavaScript中的DOM对象中。现在的问题是IE和fireFox加载XML的方式不一样。因此,我们最好将其封装成一个加载XML的方法。/***@paramflagtrue代表文件,false代表字符串*@paramxmldoc字符串或文件要封装成DOM对象*@return返回根节点的元素节点*关注高版本优先!!**/functionloadXML(flag,xmldoc){//浏览器为低版本IEvarobjXml;if(window.ActiveXObject){//如果是IE,创建ActiveXObject对象有两种方法varname=["MSXML2.DOMDocument","Miscrosoft.XmlDom"];for(vari=0;i1){for(varloopIndex=0;loopIndex0){varvalue=xmldoc.selectNodes(xpath)返回值;}else{//如果是fireFoxvarxpathObj=newXPathEvaluator();变量值=xpathObj。评估(xpath,xmldoc,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);返回值.singleNodeValue;}}测试代码:<脚本类型="text/javascript">functiontest(){varfile=loadXML(true,"1.xml");varxpathValue=selectSingleNode(file,"//dd");变量值=xpathValue;警报(值);}在火狐、Chrome浏览器中可以正常获取节点selectNodes()。由于上面的IE问题我还没有解决,所以直接测试FireFox浏览器。当我复习Jquery的时候,我会在这里填坑。..javaScript代码:/****@paramxmldoc表示XML的根节点*@paramxpath给出XPATH表达式*@return返回一个节点数组*/functionselectNodes(xmldoc,xpath){varxpathObj=newXPathEvaluator();//如果是多节点,则返回一个迭代器variterator=xpathObj.evaluate(xpath,xmldoc,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);//将迭代器的数据写入数组vararr=newArray();变量节点;while((node=iterator.iterateNext())!=null){arr.push(node);}returnarr;}测试代码:functiontest(){varfile=loadXML(true,"1.xml");varxpathValue=selectNodes(file,"//aa");变量值=xpathValue;警报(值);}作用:文章如有错误,欢迎指正,互相交流。习惯微信看技术文章,想获取更多Java资源的同学可以关注微信公众号:Java3y