DOM(二) HTML DOM

a. <img src="mypicture.jpg" border="0"/> ,如果要改属性可以通过 getAttribute()或者 setAttribute(),也可以直接写为 var nodeImg = document.getElementByID(); nodeImg.src = ""; nodeImg.border = "1";因为class是ECMAScript的关键字,所以对于class属性,我们调用nodeImg.className = "".注意:IE在setAttribute()上有个很大的问题,无法及时刷新。

b. HTML DOM 对table的操作有一套专门的API
        caption         指向<caption/>元素(如果存在)
        tBodies            指向<tbody/>元素(如果存在)
        tFoot            指向<tfoot/>元素(如果存在)
        tHead            指向<thead/>元素(如果存在)
        rows
        createTHead()
        createTFoot()
        createCaption()
        deleteTHead()
        deleteTFoot()
        deleteCaption()
        deleteRow(position)
        insertRow(position)
        <tbody/>元素添加了以下内容:
            rows
            deleteRow(position)
            insertRow(position)
            <tr/>元素添加了以下内容:
                cells
                deleteCell(position)
                insertCell(position)

c. NodeIterator用来遍历对象
        
        这个对象的构造函数有四个参数:
        root :         从树中开始搜索的那个节点
        whatToShow :     一个数值代码,代表一个枚举,后面详细介绍
        filter:    自定义的NodeFilter对象,决定需要忽略哪些节点
        entityReferenceExpansion : bool值,表示是否需要扩展实体引用
        
        通过下面一个或者多个常量的与或操作,可以设置whatToShow的值:
        NodeFilter.SHOW_ALL
        NodeFilter.SHOW_ELEMENT
        NodeFilter.SHOW_ATTRIBUTE
        NodeFilter.SHOW_TEXT
        NodeFilter.SHOW_CDATA_SECTION
        NodeFilter.SHOW_ENTITY_REFERENCE
        NodeFilter.SHOW_ENTITY
        NodeFilter.SHOW_PROCESSING_INSTRUCTION
        NodeFilter.SHOW_COMMENT
        NodeFilter.SHOW_DOCUMENT
        NodeFilter.SHOW_DOCUMENT_TYPE
        NodeFilter.SHOW_DOCUMENT_FRAGMENT
        NodeFilter.SHOW_NOTATION

        方法:

        
//  不使用自定义NodeFilter参数,可以传入null
         var  iterator  =  document.createNodeIterator(document, NodeFilter.SHOW_ALL,  null false );
        
var  node1  =  iterator.nextNode();  
        
var  node2  =  iterator.nextNode(); 
        
var  node3  =  iterator.previousNode();
        alert(node1 
==  node3);  //  output "true"

        
//  扩展NodeFilter对象,该对象只有一个方法acceptNode()
         var  myNodeFilter  =
        
{
            acceptNode : 
function(oNode)
            
{
                
return (oNode.tagName == "p"? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;
            }

        }

        或者
        
var  myNodeFilter  =   new  Object();
        myNodeFilter.acceptNode 
=   function (oNode)
        
{
            
return (oNode.tagName == "p"? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;
        }

        
        
//  使用自定义NodeFilter对象: 
var  iterator  =  document.createNodeIterator(document, NodeFilter.SHOW_ALL, myNodeFilter,  false );

        
//  如果使用NodeIterator遍历,如果使用自定义的NodeFilter,忽略掉一个节点,它也就不遍历该节点的子节点了,
         //  所以子节点也会被忽略,如果不想忽略,就要使用下面的TreeWalker

d. TreeWalker有点像NodeIterator的大哥:它有NodeIterator所有的功能(nextNode()和previousNode()),并且添加了一些遍历方法:
    parentNode()----进入当前节点的父节点
    firstChild()----进入当前节点的第一个子节点
    lastChild()----进入当前节点的最后一个子节点
    nextSibling() ----进入当前节点的下一个兄弟节点
    previousSibling()----进入当前节点的前一个兄弟节点
    可以通过 document.createTreeWalker() 来创建TreeWalker
   

转载于:https://www.cnblogs.com/joeliu/archive/2008/01/21/1047642.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值