使用 createElementNS 创建的元素不显示

Element created with createElementNS doesn't show

每次单击按钮时,我都试图创建一个带有 <svg> 标签和 JavaScript 的新 <img>。当我在控制台 firebug 中看到结果时,它工作正常,但屏幕上没有任何显示。 我想要的是每次单击按钮时在最后一张图像之后显示图像 <svg>

提前致谢。

    var svgNS = "http://www.w3.org/2000/svg"; 

mybtn.addEventListener("click", createCircleSVG);


    function createCircleSVG(){
      var d = document.createElement('svg');
      d.setAttribute('id','mySVG');

      document.getElementById("svgContainer").appendChild(d); 
      createCircle();
    }    

function createCircle(){

        var myCircle = document.createElementNS(svgNS,"circle"); //to create a circle."
        myCircle.setAttributeNS(null,"id","mycircle" + opCounter++);
        myCircle.setAttributeNS(null,"cx",25);
        myCircle.setAttributeNS(null,"cy",25);
        myCircle.setAttributeNS(null,"r",100);
        myCircle.setAttributeNS(null,"fill","black");
        myCircle.setAttributeNS(null,"stroke","blue");

        document.getElementById("mySVG").appendChild(myCircle);
    }  

您需要使用 createElementNS 在 SVG 命名空间中创建 svg 元素(就像您已经为圆所做的那样)例如

var d = document.createElementNS(svgNS, 'svg');

给 SVG 元素指定宽度和高度也是必要的

    d.setAttribute("width", "100%");
    d.setAttribute("height", "100%");

请注意,这里我们可以使用 setAttribute,因为属性位于 null 命名空间中。如果需要,您也可以转换 circle setAttributeNS 调用。

创建 SVG:

var svg = document.createElementNS(ns, 'svg');

第一个函数:

function createSVG() { ... }

第二个函数:

function createSVGCircle() { createSVG() ... }

或分开:

createSVG();
createSVGCircle();

Example