dom模型.docx

上传人:b****6 文档编号:6507403 上传时间:2023-01-07 格式:DOCX 页数:48 大小:145.47KB
下载 相关 举报
dom模型.docx_第1页
第1页 / 共48页
dom模型.docx_第2页
第2页 / 共48页
dom模型.docx_第3页
第3页 / 共48页
dom模型.docx_第4页
第4页 / 共48页
dom模型.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

dom模型.docx

《dom模型.docx》由会员分享,可在线阅读,更多相关《dom模型.docx(48页珍藏版)》请在冰豆网上搜索。

dom模型.docx

dom模型

我的记录(dom模型)

文档对象模型DOM(DocumentObjectModule)定义了用户操作文档对象的接口,可以说DOM是自HTML将网上相关文档连接起来后最伟大的创新。

它使得用户对HTML有了空前的访问能力,并使开发者能将HTML作为XML文档来处理。

一、访问文档中元素

document.getElementById("id");获取给定id的元素,并将其作为对象。

document.getElementByTagName("tagname");获取所有标签名为tagname的元素,并把它保存在一个类似数组的列表中。

二、读取元素的属性、节点值及其他节点数据

node.getAttribute(“attribute”);获取属性名为attribute的属性值。

node.setAttribute(“attribute”,”value”);设置属性名为attribute的值为value。

node.nodeType;读取节点类型(1=元素,3=文本节点)。

node.nodeName;读取节点名称(元素名字或#textNode)。

node.nodeValue;读取或设置节点的值(文本节点的情况下则为文本内容)。

三、节点之间操作

node.previousSibling;获取上一个兄弟节点,并将它保存为一个对象。

node.nextSibling;获取下一个兄弟节点,并将它保存为一个对象。

node.childNodes;获取对象的所有子节点,并把它们储存到一个列表中。

对于第一个和最后一个子节点,还可以使用node.firstChild和node.lastChild进行间写。

node.parentNode;获取包含node的节点。

四、创建新节点

document.createElement(“element”);创建一个名字为element的新元素,需要提供一个字符串形式的元素名。

document.createTextNode(“string”);创建一个节点值为string的文本节点。

newNode=node.cloneNode(bool);创建newNode节点作为node的副本(克隆)。

如果bool值为true,这个克隆将包括原节点的所有子节点和属性的克隆。

node.appendChild(newNode);将newNode作为子节点,添加在node所有子节点之后。

node.insertBefore(newNode,oldNode);在node节点的子节点oldNode之前插入newNode。

node.removeChild(oldNode);移除node节点的子节点oldNode.

node.replaceChild(newNode,oldNode);使用节点newNode替换node几点的子节点oldNode。

element.innerHTML;读写给定element的HTML内容,它是一个字符串,包括所有自己节点及它们的属性和文本内容。

.

例子

getElementsByTagName()获取HTML标记

代码:

DOMPage

functionsearchDOM(){

varoli=document.getElementsByTagName("li");

alert(oli.length+""+oli[0].tagName+""+oli[3].childNodes[0].nodeValue);

varoul=document.getElementsByTagName("ul");

varoli2=oul[1].getElementsByTagName("li");

alert(oli2.length+""+oli2[0].tagName+""+oli2[1].childNodes[0].nodeValue);

}

    客户端语言

  • HTML
  • javascript
  • CSS

    服务器语言

  • ASP.NET
  • JSP
  • PHP

输出结果:

getElementById()获取id元素

代码:

getElementsById

functionsearchDOM(){

varoli=document.getElementById("cssli");

alert(oli.tagName+""+oli.childNodes[0].nodeValue);

}

    客户端语言

  • HTML
  • javascript
  • CSS

    服务器语言

  • ASP.NET
  • JSP
  • PHP

输出结果:

childNodes存取子元素的列表

代码1:

getElementsById

functionmyDOMInspector(){

varoUl=document.getElementById("mylist");

varDOMString="";

if(oUl.hasChildNodes()){

varoCh=oUl.childNodes;

for(vari=0;i

DOMString+=oCh[i].nodeName+"\n";

}

alert(DOMString);

}

  • HTML
  • HTML
  • HTML
  • HTML
  • HTML
  • 输出结果1:

    代码2:

    DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http:

    //www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    childNodes

    functionmyDOMInspector(){

    varoUl=document.getElementById("myList");//获取

      标记

      varDOMString="";

      if(oUl.hasChildNodes()){//判断是否有子节点

      varoCh=oUl.childNodes;

      for(vari=0;i

      DOMString+=oCh[i].childNodes[0].nodeValue+"\n";

      }

      alert(DOMString);

      }

    • 糖醋排骨
    • 圆笼粉蒸肉
    • 泡菜鱼
    • 板栗烧鸡
    • 麻婆豆腐

    输出结果2:

    getAttribute()获取指定节点的指定属性值

    代码:

    getElementsById

    functionmyDOMInspector(){

    varmyimg=document.getElementsByTagName("img")[0];

    alert(myimg.getAttribute("title"));

    //获取img标记的title属性的值

    }

    输出结果:

    createElement()创建新节点

    代码:

    getElementsById

    functioncreatep(){

    varop=document.createElement("p")//创建一个新节点标记

    varotext=document.createTextNode("Sunles新创建的标记元素");

    //创建一个包括指定数据的文本节点

    op.appendChild(otext);

    //添加一个新的子节点otext文本,将节点放在当前节点最后的子节点后

    document.body.appendChild(op);

    }

    写出下行的字

    输出结果:

    innerHTML元素的内容包括代码本身

    代码:

    getElementsById

    functionmyDOMInnerHTML(){

    varmydiv=document.getElementById("mytest");

    alert(mydiv.innerHTML);//显示HTML元素的内容(包括标记,属性,文本)

    mydiv.innerHTML="";

    }//重新定义HTML元素的内容

    Sunles

    这是Sunles的文字介绍

    输出结果:

    属性:

    1Attributes    存储节点的属性列表(只读)

    2childNodes    存储节点的子节点列表(只读)

    3dataType    返回此节点的数据类型

    4Definition    以DTD或XML模式给出的节点的定义(只读)

    5Doctype    指定文档类型节点(只读)

    6documentElement    返回文档的根元素(可读写)

    7firstChild    返回当前节点的第一个子节点(只读)

    8Implementation    返回XMLDOMImplementation对象

    9lastChild    返回当前节点最后一个子节点(只读)

    10nextSibling    返回当前节点的下一个兄弟节点(只读)

    11nodeName    返回节点的名字(只读)

    12nodeType    返回节点的类型(只读)

    13nodeTypedValue    存储节点值(可读写)

    14nodeValue    返回节点的文本(可读写)

    15ownerDocument    返回包含此节点的根文档(只读)

    16parentNode    返回父节点(只读)

    17Parsed    返回此节点及其子节点是否已经被解析(只读)

    18Prefix    返回名称空间前缀(只读)

    19preserveWhiteSpace    指定是否保留空白(可读写)

    20previousSibling    返回此节点的前一个兄弟节点(只读)

    21Text    返回此节点及其后代的文本内容(可读写)

    22url    返回最近载入的XML文档的URL(只读)

    23Xml    返回节点及其后代的XML表示(只读)

    方法:

    1appendChild    为当前节点添加一个新的子节点,放在最后的子节点后

    2cloneNode    返回当前节点的拷贝

    3createAttribute    创建新的属性

    4createCDATASection    创建包括给定数据的CDATA段

    5createComment    创建一个注释节点

    6createDocumentFragment    创建DocumentFragment对象

    7createElement    创建一个元素节点

    8createEntityReference    创建EntityReference对象

    9createNode    创建给定类型,名字和命名空间的节点

    10createPorcessingInstruction    创建操作指令节点

    11createTextNode    创建包括给定数据的文本节点

    12getElementsByTagName    返回指定名字的元素集合

    13hasChildNodes    返回当前节点是否有子节点

    14insertBefore    在指定节点前插入子节点

    15Load    导入指定位置的XML文档

    16loadXML    导入指定字符串的XML文档

    17removeChild    从子结点列表中删除指定的子节点

    18replaceChild    从子节点列表中替换指定的子节点

    19Save    把XML文件存到指定节点

    20selectNodes    对节点进行指定的匹配,并返回匹配节点列表

    21selectSingleNode    对节点进行指定的匹配,并返回第一个匹配节点

    22transformNode    使用指定的样式表对节点及其后代进行转换

    23transformNodeToObject    使用指定的样式表将节点及其后代转换为对象

    DOM(文档对象模型)

    DOM(文档对象模型)概念的推出,这个API使HTML如虎添翼,但是有些学DHTML的朋友还是有些困挠,只是因为目前的手册的书写不太科学,是按字母

    来分的,不便查阅.其实DOM中最关键是要掌握节点与节点之间的关系(betweennodeandnode),想学习DHTML中的DOM千万不要从头到尾地看遍所有的属性和方法,

    其实DOM教给我们的就是一个层次结构,你可以理解为一个树形结构,就像我们的目录一样,一个根目录,根目录下有子目录,子目录下还有子目录……

    根节点:

    DOM把层次中的每一个对象都称之为节点(NODE),以HTML超文本标记语言为例:

    整个文档的一个根就是,在DOM中可以使用document.documentElement来访问它,它就是整个节点树的根节点(ROOT)

    子节点:

    一般意义上的节点,根节点以下最大子节点就是主文档区了,要访问到body标签,在脚本中应该写:

    document.body

    body区以内所有的文本及HTML标签都是文档的节点,分别称为文本节点、元素节点(或者叫标签节点),大家知道HTML说到底只是文本而矣,不论怎么样的网页必然由这两个节点组成,也只能由这两个节点组成

    节点之间的关系:

    节点之间的关系也是DOM中最重要的一个关节,如何正确地引用到节点对象,一定要清楚节点树各个节点的相互描述方式,在DHTML里,Javascript脚本就用了各个节点对象的一整套方法和属性去描述另外的节点对象。

    节点的绝对引用:

    返回文档的根节点

    document.documentElement

    返回当前文档中被击活的标签节点

    document.activeElement

    返回鼠标移出的源节点

    event.fromElement

    返回鼠标移入的源节点

    event.toElement

    返回激活事件的源节点

    event.srcElement

    节点的相对引用:

    (设当前对节点为node)

    返回父节点

    node.parentNode

    node.parentElement

    返回子节点集合(包含文本节点及标签节点)

    node.childNodes

    返回子标签节点集合

    node.children

    返回子文本节点集合

    node.textNodes

    返回第一个子节点

    node.firstChild

    返回最后一个子节点

    node.lastChild

    返回同属下一个节点

    node.nextSibling

    返回同属上一个节点

    node.previousSibling

    节点的各种操作:

    (设当前的节点为node)

    新增标签节点句柄:

    document.createElement(sNode)//参数为要新添的节点标签名,例:

    newnode=document.createElement("div");

    1、添加节点:

    追加子节点:

    node.appendChild(oNode)//oNode为生新增的节点句柄,例:

    node.appendChild(newnode)

    应用标签节点

    node.applyElment(oNode,sWhere)//oNode为生新增的节点句柄,sWhere有两个值:

    outside/inside,加在当前节点外面还是里面插入节点

    inode.insertBefore()

    node.insertAdjacentElement()

    node.replaceAdjacentText()

    2、修改节点:

    删除节点

    node.remove()

    node.removeChild()

    node.removeNode()

    替换节点

    node.replaceChild()

    node.replaceNode()

    node.swapNode()

    3、复制节点:

    返回复制复制节点引用

    node.cloneNode(bAll)//bAll为布尔值,true/false是否克隆该节点所有子节点

    4、节点信息

    是否包含某节点

    node.contains()

    是否有子节点

    node.hasChildNodes()

    javascript操作xml

    --

    vardoc=newActiveXObject("Msxml2.DOMDocument");//ie5.5+,CreateObject("Microsoft.XMLDOM")

    //加载文档

    //doc.load("b.xml");

    //创建文件头

    varp=doc.createProcessingInstruction("xml","version='1.0'  encoding='gb2312'");

        //添加文件头

        doc.appendChild(p);

    //用于直接加载时获得根接点

    //varroot=doc.documentElement;

    //两种方式创建根接点

    //    varroot=doc.createElement("students");

        varroot=doc.createNode(1,"students","");

        //创建子接点

        varn=doc.createNode(1,"ttyp","");

            //指定子接点文本

            //n.text="thisisatest";

        

        //创建孙接点

        varo=doc.createElement("sex");

            o.text="男";    //指定其文本

        //创建属性

        varr=doc.createAttribute("id");

            r.value="test";

            //添加属性

            n.setAttributeNode(r);

        //创建第二个属性    

        varr1=doc.createAttribute("class");

            r1.value="tt";

            

            //添加属性

            n.setAttributeNode(r1);

            //删除第二个属性

            n.removeAttribute("class");

            //添加孙接点

            n.appendChild(o);

            //添加文本接点

            n.appendChild(doc.createTextNode("thisisatextnode."));

            //添加注释

            n.appendChild(doc.createComment("thisisacomment\n"));

        

            //添加子接点

            root.appendChild(n);

        

        //复制接点

        varm=n.cloneNode(true);

            root.appendChild(m);

            

            //删除接点

            root.removeChild(root.childNodes(0));

        //创建数据段

        varc=doc.createCDATASection("thisisa

    展开阅读全文
    相关资源
    猜你喜欢
    相关搜索

    当前位置:首页 > 职业教育 > 中职中专

    copyright@ 2008-2022 冰豆网网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1