动态呈现的SVG未显示

Roy*_*nto 25 javascript html5 svg

我有以下svg对象,如果我直接放入html页面而不使用代码(静态),它会正确呈现.

但是相同的svg内容如果我使用JavaScript插入我的html页面它没有显示,如果我在firebug中打开它并检查svg并尝试编辑svg标签,它会显示.

可能是什么问题呢

<svg height="100" width="100">
  <rect width="100" height="100" style="fill:rgb(0,0,255);stroke-width:1;stroke:rgb(0,0,0)"></rect>
</svg>
Run Code Online (Sandbox Code Playgroud)

我正在使用下面的代码动态添加svg,这里容器将是我的div,它在body下面

        viewPort = document.createElementNS('http://www.w3.org/2000/svg','svg');

        viewPort.setAttribute('height', 100);

        viewPort.setAttribute('width', 100);

        container.innerHTML = '';

        container.appendChild(viewPort);
Run Code Online (Sandbox Code Playgroud)

在此之后我在使用中添加rect

            boardElement = document.createElement('rect');

            boardElement.setAttribute('width', '100');

            boardElement.setAttribute('height', '100');

            boardElement.setAttribute('y', '1');

            boardElement.setAttribute('x', '1');

            boardElement.setAttribute('style', "fill:rgb(0,0,255);stroke-width:1;stroke:rgb(0,0,0)");


viewPort.appendChild(boardElement);
Run Code Online (Sandbox Code Playgroud)

Lkr*_*ups 37

该元素boardElement应该这样声明

boardElement = document.createElementNS("http://www.w3.org/2000/svg", "rect");

  • 我读了这个问题并解释了为什么:) http://stackoverflow.com/questions/8173217/createelement-vs-createelementns.快乐的编码 (6认同)
  • 这解决了我的问题,但我不明白为什么会这样.因为时间呈现的html代码都是相同的(源代码html). (2认同)