-1

こんにちは、次の svg 文字列 str= があります

<svg width="612" height="394" xmlns="http://www.w3.org/2000/svg">
 <g>
     <title>Layer 1</title>
     <rect id="svg_1" height="152" width="265" y="44" x="91" stroke-width="5" stroke="#000000" fill="#FF0000"/>
 </g>
 <g>
     <title>Layer 2</title>
     <rect id="svg_2" height="125" width="151" y="157" x="399" stroke-width="5" stroke="#000000" fill="#FF0000"/>
 </g>
</svg>

最初の長方形の幅と高さを取得するには、javascript + jquery を使用できます。

alert("width:"+$(str).find('g:eq(0) rect:eq(0)').attr('width'));
alert("height:"+$(str).find('g:eq(0) rect:eq(0)').attr('height'));

私が試した .getBoundingClientRect() または .getBBox() のいずれかで同じ ussign を見つけたいと思います。

alert("height"+$(str).find('g:eq(0) rect:eq(0)').getBoundingClientRect().width);
alert("height"+$(str).find('g:eq(0) rect:eq(0)').getBBox().width);

しかし、うまくいきません。誰でも解決策を知っていますか?getBoundingClientRect と getBBox および文字列 str を使用するにはどうすればよいですか? ありがとう

4

1 に答える 1

5

jQueryはjQueryオブジェクトを返します。実際のDOM要素が必要です。これ[0]に、セレクターの後に追加するだけです。

alert("height"+$(str).find('g:eq(0) rect:eq(0)')[0].getBoundingClientRect().width);
alert("height"+$(str).find('g:eq(0) rect:eq(0)')[0].getBBox().width);

ディメンションを取得するには、要素をDOMに追加する必要があり、単なる文字列ではないことに注意してください。

また、これを行うためのより速く、よりエレガントな方法は...

//no need to indicate the first element since querySelector already does this;
var el = str.querySelector('g rect');
alert( "width: " + el.getBoundingClientRect().width );
alert( "width: " + el.getBBox().width );
于 2013-01-23T20:14:40.253 に答える