无法通过其ID访问SVG(Can't access SVG by its ID)

2019-10-22 01:57发布

我要的文件已加载交互使用后访问SVG及其路径的ID。 我有一个函数加载SVG和导入节点到DOM。 无论是在的document.ready也不document.addEventListener(“DOMContentLoaded”功能(事件),我能够通过它的ID来获得的元素。把它是设置在左右互动码超时的唯一方法。

我想知道的是,SVG(900KB)UND加载所有其他代码前的DOM应加载。 但是到现在为止我不能找到一个解决方案fiting。

我很困惑,因为如果我看DOM在浏览器与萤火,我能够看到的div的ID,但我不能得到它....,我不能找到我的代码的问题,因为我在加载DOM和访问DOM就绪后? 任何人在这里谁找到一个解决办法?

这是我的代码加载SVG:

function fetchXML  (url, callback) {
        var xhr = new XMLHttpRequest();
        xhr.open('GET', url, true);
        xhr.onreadystatechange = function (evt) {

        if (xhr.readyState === 4) {
            callback(xhr.responseXML);          
        }

        };
        xhr.send(null);
    };

    fetchXML("svg/bez_grey.svg",function(newSVGDoc){
        var n = document.importNode(newSVGDoc.documentElement,true);
        var mysvg = document.getElementById("map"); 

        mysvg.appendChild(n);

    })  

document.addEventListener("DOMContentLoaded", function(event) {

// Access the SVG-Elements here 

}):

Answer 1:

你需要调用document.documentElement.appendChild(n); 调用之前var mysvg = document.getElementById("map"); 。 这种负载ndocument的DOM。 您可以删除声明mysvg.appendChild(n);

该解决方案是基于在这里工作的代码示例: https://stackoverflow.com/a/3378320



文章来源: Can't access SVG by its ID