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, nullfalse);
        
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
   
posted on 2008-01-21 18:12  Liu Jian  阅读(396)  评论(1编辑  收藏  举报