遍曆SVG中的各元素

來源:互聯網
上載者:User
 在SVG中,要遍曆所有的元素,得用javascript(js)實現,嘻嘻,這個等於沒說,只要學SVG的人都知道,此外還需要用到一些DOM介面。以下所說代碼均為js代碼。

  首先,通過document.documentElement屬性,獲得整個SVG文檔,即SVG的根項目,所有的節點都包含在該元素中。當然,如果是想訪問某個已知ID的節點中的各子節點,則可以直接通過document.getElementById("元素的ID")找到局部的根項目。為了敘述連貫,假設node代表要訪問的各元素的根節點。  接下來就可以對根項目中的各節點進行訪問了。可以通過for語句依次訪問各節點,初值為0,終值為node.childNodes.length。在SVG中,兩個節點元素之間的空白地區也算是一個元素,它的nodeType值為3,即為Text_Node,所以可通過該特點將其排除掉。至於其餘的具體的每個節點,可通過node.childNodes.item(i)訪問。
    var SvgMainMapDoc=id2.getSVGDocument();
   
     var node=SvgMainMapDoc.documentElement;
        var child;      
        for(var i=0;i<node.childNodes.length;i++){
           if(node.childNodes.item(i).nodeType!=3){           
              child=node.childNodes.item(i);
              if(child.getAttribute("id"))
              {
              alert(child.getAttribute("id")) 
              }          
           }      
        }
其中id2是
    <embed src="未命名-1.svg" type="image/svg+xml" name="id2" pluginspage="http://www.adobe.com/svg/viewer/install/main.html"
        menu="false" width="30" height="30"></embed>

下面是遞迴遍曆所有的父子節點

function getlayer()
{
    var SvgMainMapDoc=id2.getSVGDocument();
   
     var node=SvgMainMapDoc.documentElement;

     findnode(node)
}

//遞迴遍曆節點nodeType為3兩個節點元素之間的空白地區也算是一個元素,4時是指令碼
function findnode(node)
{
    for(var i=0;i<node.childNodes.length;i++)
    {
      if(node.childNodes.item(i).nodeType!=3&&node.childNodes.item(i).nodeType!=4)
      {       
          var child=node.childNodes.item(i);
          if(child.getAttribute("layer"))
          {
            alert(child.getAttribute("layer"));
          } 
          if(child.childNodes)
          {
            findnode(child);
          }
          else
          {
            break;
          }
      }
    }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.