2016-09-22 35 views
0

を取得し、私は、次のSVGのテキスト要素を持っている:SVGのテキスト要素の幅

<text data-model-id=​"k10673" x=​"584" y=​"266" fill-opacity=​"1" style=​"font:​ 12px Arial,Helvetica,sans-serif;​ " fill=​"#a5d16f">​BU YIL SONU​</text>​ 

それは画面のほぼ中央にあります。次のように私はそれを調べることができます。私はこのテキストの幅を取得する必要があります

enter image description here

。クロムデバッガでは、私が見ることができるテキストは、しかし83.941

enter image description here

の幅を持っていることを、私は私のJavascriptのページから、この幅を取得することはできません。幅に関するすべてのメソッドはゼロを返しますが、Chromeデバッガで正しく表示されます。

次のように私は要素を取得:

var x = document.querySelector("#k11489 > g:nth-child(27) > text:nth-child(1)") 

その後、Javascriptの機能はすべてのリターンがゼロまたは未定義を次

x.getComputedTextLength() 
x.getBBox().width 
x.style.width 

また、私はjQueryオブジェクトを取得した後、次のjQueryの機能を試してみましたしかし、それらのいずれも幅を返しません:

x.width() //Returns the function 
x.innerWidth() //Returns null 
x.outerWidth() //Returns null 

注: xがテキスト要素を指していることを確認するために、私はコンソールからそれらをチェックします。次のJavaScriptとjQueryオブジェクトのスナップショットです:

enter image description here

enter image description here

は、どのように私はJavascriptやjQueryのことで、このオブジェクトの幅を得ることができますか?

+0

あなたは待っていますか? –

+0

@PaulLeBeau私はChromeをデベロッパーコンソールから試用していますが、DOMがロードされてから数分です。 –

+1

'x'がテキスト要素を指しているかどうか知っていますか? – ConnorsFan

答えて

-1

SVG 1.1の一部であるgetBBox()を使用すると、以下のようにsvg要素の幅を取得できます。それが有効なセレクタは、次に使うならDOMは、要素にアクセスしようとする前に準備ができるまで

$("your_jquery_selector")[0].getBBox().width. 

$("#k11489 > g:nth-child(27) > text:nth-child(1)")[0].getBBox().width 
+0

彼らはこれを試して、0を返す問題のOP状態。 –

+0

私はjquery関数とjavscript関数の両方をテストし、どちらも私のローカルテストのために働いた。このスクリーンショットhttps://www.dropbox.com/s/q2jhjggwiv691bi/svg.png?dl=0をご覧ください。彼がこの機能をjavascriptに適用しているので、問題はDOMセレクタにある可能性があります。特定の要素が存在しない場合、最終的に彼はforのために未定義を得るでしょう。まず、彼は確実にする必要があります、セレクタは正しい –

+0

すべてのことは、OPは何か異なったことをしているということです。この要素は、質問のスクリーンショットで選択の結果を示すときに存在します。 –