Dom(document object model)文档对象模型(递归)

Dom其实就是将一些标记型的文档以及文档中的内容当成对象。 

Dom三层模型:
dom1:将html文档封装成对象
dom2:将xml文档封装成对象
dom3:将xml文档封装成对象 

html
        |----head
                |----title
                
|----base
                
|----mata
                 |----link
                |----style
                |----script
         |----body
                 |----div
                 |----form
                        |----input
                        |----select
                 |----span
                  |----table
                          |----tbody
                                  |----tr
                                          |----td
                                           |----th
                |-----dl
                        |----dt
                        |----dd
                
                  |----a
DOM树    节点 
当标记型文档加载进内存,那么内存中有了一个对应的DOM树。当文档过大时,消耗资源,一般采用由事件驱动的sax解释
节点类型:
标签型节点:类型type:1
文本节点:    类型type:    3
注释型节点: 类型type:    8
属性节点:    类型type:    2
document:    类型type:    9

    *    Document
    getElementById    返回第一个对象的引用
    getElementsByName("xxx")按名字,返回集合(数组)
    getElementsByTagName("xxxx") 按标签名,标签集合(数组),大多容器性标签都具有这种特点。
    document.all(index);
nodename    nodetype    attributes  属性集合
nextSibling    下一兄弟节点
previousSibling上一兄弟节点
childNode子节点    childNodes    
获取作为指定对象直接后代的  HTML 元素 和  TextNode  对象的集合(数组)。

parentNode父节点


1)java中递归实例
public void listFile(File file,int level){
System.out.println(getSpace(level)+file.getName());
level++:
File[] files=file. listFiles();     //取出所有文件
for(int x=0;x<files.length;x++){
if(files .isDirctory){
listFile(files[x])
}else{
System.out.println(getSpace(lenvel)+files[x].getName());
}
}
}
public String getSpace(int level){
StringBuider sb=new StringBuilder();
for(int i=0;i<level;x++){
sb.append("|----");
}
return sb.toString;
}


2)javascript中查询document递归实例    (实验上将程序代码也当文本显示出来,不知如何去掉)
var str=""
function listNode(node,level)
{
printInfo (node,level);
level++;
var nodes=node.childNodes; //获取作为指定对象直接后代的 HTML 元素和 TextNode 对象的集合。
for(var x=0;x<nodes.length;x++)
{
if(nodes[x].hasChildNodes()) //返回表明对象是否有子对象的值
listNode(nodes[x],level);     //递归
else
printInfo(nodes[x],level)
}
}
function getSpace(level)
{
var s="";
for(var x=0;x<level;x++){
s+="|----";
}
return s;
}

function printInfo(node,level){
str+= getSpace(level)+"name:"+node.nodeName+"........."+"type:"+node.nodeType+"......"+"value:"+node.nodeValue+" <br/>";
}
function getNode(){
listNode(document,0);
document.write(str);
}  
(部分内部可参阅QQ 笔记)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值