2017-02-11 12 views
0

私はいくつかのノードの上に座っているSVGを持っています、そして、私はそのようなノードに接続できるようにSVGパスを動的に描いています。しかし、いったんパスを生成すると、何らかの理由でパスが表示されません。SVGパスが表示されないのはなぜですか?

ここで最も奇妙な部分は... 私は私のinspect要素の中に入って、HTMLをちょっと編集してもう一度レンダリングすれば表示されます。。ここで

はGIFです:

enter image description here

ここでパスを生成するコードです:

var path = document.createElementNS('http://www.w3.org/2000/svg', 'path'); 
path.setAttributeNS(null, 'id', 'path' + index); 
path.setAttributeNS(null, 'd', 'M0 0'); 
path.setAttributeNS(null, 'stroke', '#484848'); 
path.setAttributeNS(null, 'fill', 'none'); 
path.setAttributeNS(null, 'stroke-width', '4px'); 

あなたが実際に実際の例を見て、私はしている場合それは良いでしょうが、ここにペンがあります:http://codepen.io/anon/pen/OWaEdd

困っている人を助けてください。パスが生成されたときに私のパスが表示されない理由を知りたい(そして修正したい)。私は大いにそれを感謝します!

+0

SafariとChromeの両方で、ペンは私にとってはうまく機能します。 – jcaron

+0

@ jcaron私の答えは答えられました!しかし、あなたは良い点を挙げています。私は先に進み、スクリプトをもう一度 "中断"します。私はそれを修正する方法をコメントしました。ありがとう! –

答えて

2

createElementNSを使用して<path>を作成するときは、SVG名前空間に要素を作成する必要があることがわかります。問題は、同じ機能を持つ<svg>要素を作成しないことです。

'xmlns'の後続のsetAttributeの呼び出しが間違っていて削除できますが、名前空間は要素作成の副作用であり、setAttributeで事実の後に設定できるものではありません。

+0

それはそれが仲間です!非常に簡単です。私は100%です。私はある時点でそれを試しましたが、後で属性を設定すると私が台無しになったようです。 –

関連する問題