2012-04-10 12 views
24

JavaScriptでSVG要素のビューボックスを変更しようとしています。基本的には、私はバイナリ検索ツリーを描画しています。それが広すぎると、ツリーがウィンドウに収まるようにビューボックスを縮小して縮小したいと考えています。私は現在、使用しています:JavaScript(ライブラリなし)でSVGビューボックスを操作する

if(SVGWidth>=1000){ 
    var a = document.getElementById('svgArea'); 
    a.setAttribute("viewbox","0 0 " + SVGWidth + " 300"); 
} 

HTMLは次のとおりです。

<svg id="svgArea" xmlns="w3.org/2000/svg"; xmlns:xlink="w3.org/1999/xlink"; width="1000" height="300" viewBox="0 0 1000 300"> 

私はまた、setAttributeNS( 'ヌル'、...)を使用してみましたが、それはどちらか動作していないようでした。私が気付いたことは、(a)奇妙に思われる[オブジェクトSVGSVGElement]を警告するときです。どんな助けもありがとうございます。

+0

なぜライブラリを使用したくないのですか? –

+0

私は、SVGWidthはおそらく悪い変数名です、treeWidthだけである必要がありますを追加する必要があります。また、SVGのhtmlは です。

+1

私はJavaScriptの学習に集中しているのでライブラリを使用していません。次回のプロジェクトではライブラリに追加しますが、ネイティブJavaScriptから始めるのが最善だと思いました。 –

答えて

45

SVGの文脈を見て良いだろうが、純粋なSVG文書を私のために働い以下:viewBoxは大文字と小文字が区別されるので

shape = document.getElementsByTagName("svg")[0]; 
shape.setAttribute("viewBox", "-250 -250 500 750"); 

たぶんそれはですか?

+15

大文字と小文字が区別されました。一숨.... –

+5

それを見て、それは簡単でなかった場合、それはより困難になりました。そして、今までは実際のsvg要素の属性を使いこなすことは一度もなかったので、私たちはどちらかと思った。 – Anthony

+4

私は同じ間違いをしました。 –

6

コードにエラーがあります。「viewbox」は「viewBox」とは異なります... Bは大文字です。コードを次のように変更してください:

a.setAttribute("viewBox","0 0 " + SVGWidth + " 300"); 
+0

まあ、私は今答えが質問に答えていると思います。 'b'はそれがうまくいかなかった理由だった。しかし、user3434597は@ Anthonyの古い答えを先に読んでいるはずです。たぶん彼はこれを取り除くだろう。 – akauppi

関連する問題