2012-02-02 3 views
-1

私はここで、HTMLファイルにsvg要素を動的に挿入できるstackoverflowを次のように学びました。svgコードをjavascriptコードに変換するには?

var svgnode = document.createElementNS('http://www.w3.org/2000/svg','svg'); 
    var path = document.createElementNS('http://www.w3.org/2000/svg','path'); 
    path .setAttribute("d","......"); 
    svgnode.appendChild(path); 
    document...........appendChild(svgnode); 

これはうまくいきます。 次のように続けることができると私は期待しました。

var defs = document.createElementNS('http://www.w3.org/2000/svg','defs'); 
var use = document.createElementNS('http://www.w3.org/2000/svg','use'); 
var path2=document.createElementNS('http://www.w3.org/2000/svg','path'); 
path2.setAttribute("d","...."); 
path2.setAttribute("id","path2"); 
defs.appendChild(path2); 
use.setAttribute("xlink:href","#path2"); 
use.setAttribute("x","10"); 
use.setAttribute("y","10"); 
svgnode.appendChild(defs); 
svgnode.appendChild(use); 
document...........appendChild(svgnode); 

しかし、2番目のものは失敗します。

第2のもので何が間違っているかを指摘してください。

ありがとうございます。

+0

どこが失敗しますか?どのようなエラーメッセージや症状が表示されますか? –

+0

Google Chromeでは、結果として新しいページが正しいsvgを保持しますが、画像は表示されません。それをファイルに保存し、保存したファイルを開くと正しい画像が表示されます。 –

答えて

2

それは問題だだけxlink:hrefだとそれはXLINK名前空間にする必要があります:

use.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", "#path2"); 

コードの残りの部分は非名前空間の形で正常に動作します。

+0

はい、コードを修正しました!ありがとうございます。 –

関連する問題