2011-10-23 86 views
1

我有一個嵌入到HTML文檔裏面的SVG文件。我可以使用ID和類訪問HTML和SVG中的元素。但是,我想對嵌入式svg執行一些拖放操作。我一直在使用下面的示例來分隔SVG和javascript,但是當我將SVG嵌入到HTML中時,它給我帶來了麻煩。在SVG初始化函數嵌入將SVG嵌入到HTML中,拖放代碼問題

onload="initSVG(evt)" 

我需要訪問HTML中的SVG的根,這樣我可以拖放程序工作時不起作用。對於一個獨立的SVG原始代碼是這樣寫的:

function initSVG(evt) 
{ 
SVGDocument = evt.target.ownerDocument; 
SVGRoot = SVGDocument.documentElement; 
TrueCoords = SVGRoot.createSVGPoint(); 
GrabPoint = SVGRoot.createSVGPoint(); 
} 

我重寫是像這樣的,所以它可以在不onload事件調用運行:

function initSVG() 
{ 
SVGRoot = document.getElementsByTagName("svg"); 
TrueCoords = SVGRoot.createSVGPoint(); 
GrabPoint = SVGRoot.createSVGPoint(); 
} 

這給了錯誤:「對象#沒有方法'CreateSVGPoint'「。所以它似乎並沒有像對待獨立的svg那樣對待導入的SVG。我如何獲得SVGRoot?

謝謝!

P.S.我知道我應該使用jQuery,但我想學習原始DOM。

回答

4

getElementsByTagName函數返回一個NodeList,而不是元素。嘗試:

SVGRoot = document.getElementsByTagName("svg")[0]; 
+0

,做它。謝謝! – pluke