我有一个嵌入到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。
答案 0 :(得分:4)
getElementsByTagName
函数返回NodeList
,而不是元素。尝试:
SVGRoot = document.getElementsByTagName("svg")[0];