javascript - 无法通过 ID 访问 SVG

标签 javascript dom svg get load

我想在文件加载后访问 svg 的 id 及其路径以供交互使用。我使用函数加载 SVG 并将节点导入到 DOM。在 document.readydocument.addEventListener("DOMContentLoaded", function(event) 中,我都无法通过元素的 id 获取元素。获取它的唯一方法是围绕交互代码设置超时。

我想要的是 SVG (900kb) 及其 DOM 应在加载所有其他代码之前加载。但直到现在我还没有找到合适的解决方案。

我很困惑,因为如果我用 firebug 查看浏览器中的 DOM,我可以看到带有 ID 的 div,但我看不到它......而且我在代码中找不到问题,因为我加载了它在 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 

}):

最佳答案

在调用 var mysvg = document.getElementById("map"); 之前,您需要先调用 document.documentElement.appendChild(n);。这会将 n 加载到 document 的 DOM 中。您可以删除语句mysvg.appendChild(n);

此解决方案基于此处的工作代码示例:https://stackoverflow.com/a/3378320

关于javascript - 无法通过 ID 访问 SVG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28682214/

相关文章:

javascript - Highstocks 时代时间与时区不匹配

javascript - 从 MySQL 中的 TinyMCE 数据中删除/r/n 标签

javascript - 滚动到 JavaScript 中的文本

正则表达式一个或多个 vs n+1 匹配

html - 具有笛卡尔坐标系的简单可缩放 SVG 图形

javascript - 正则表达式只允许字母、空格和 - 只

javascript - 谷歌地图API将目的地分组并找到最短路径

javascript - 获取 jQuery 插入的 DOM 元素,而无需在插入后重新查询元素

javascript - 如何使用 getComputedStyle 将 HTML 子树转换为字符串和内联样式?

javascript - 无法获取属性值?