SVG嵌入到HTML中,拖放代码问题

时间:2011-10-23 23:43:38

标签: javascript html5 svg draggable

我有一个嵌入到HTML文档里面的SVG文件。我可以使用id和类来访问html和svg中的元素。但是,我想在嵌入式svg上执行一些拖放操作。我一直在http://svg-whiz.com/svg/DragAndDrop.svg使用以下示例将SVG与javascript分开,但是当我将SVG嵌入HTML时,它给我带来了麻烦。嵌入式

时,SVG中的init函数不起作用
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。

1 个答案:

答案 0 :(得分:4)

getElementsByTagName函数返回NodeList,而不是元素。尝试:

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