2012-03-26 5 views
1

私はこのようなSVGで簡単なthmlページがあります。このSVGからjQueryまたはJavaScriptを使用して、HTMLページからSVGコードを取得するにはどうすればよいですか?

<rect width="105.71429" height="80" x="351.42856" y="152.36218" id="rect1" style="fill:#008000"></rect> 

:私は文字列を取得できますか

<div id="plan"> 
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"> 
<g id="layer3"> 
    <rect width="105.71429" height="80" x="351.42856" y="152.36218" id="rect1" style="fill:#008000"></rect> 
    <rect width="120" height="85.714287" x="500" y="389.50504" id="rect2" style="fill:#008000"></rect> 
</g> 
</svg> 
</div> 

。 jqueryとjquery svgを使用できます。 1

[ここにリンクの説明を入力します]

var str = $("#plan #rect1")[0]; 

変数strは、[オブジェクトSVGRectElement] です:私はこの文字列を取る

コンソールで
$(document).ready(function() { 
    console.log($("#plan #rect1")[0]); 
}) 

、しかし、私はこのような変数に文字列を取得する必要があります:私はしてみてください

答えて

1
$('#rect1')[0] 

これが役立ちます。 jQuery要素の代わりにタグにアクセスする場合は、[]を使用してカプセル化要素を取得します。

編集

This should do the trick for you

解決策は、選択内容を別のタグにラップし、その内容を表示するために.html()を呼び出すことです。

そうでない場合、あなたのhtmlでいくつかの問題を持って、あなたの一時のdivにそれを追加する前に.clone()の呼び出しを忘れないでください:)

+0

私はvar str = $( "#plan>#rect1")[0]を使用します。警告(文字列); strが定義されていません – VasyambaTula

+0

$( "#plan>#rect1")は、 "rect1"というIDを持つプランの次の子を検索しますが、あなたの子供は "g"タグです。それが$( "#plan>#rect1")が何も返さない理由です。 ">"は直属の子供を意味します。 代わりに$( "#plan#rect1")を使用してください。 – Mordhak

+0

私は以下を使用します:var str = $( "#plan#rect1")。html(); アラート(文字列)。エラー - Uncaught TypeError:未定義のメソッド 'replace'を呼び出すことはできません。私は使用します:var str = document.getElementById( 'rect1'); var st = str.innerHTML; アラート(st);しかしvar stは定義されていません – VasyambaTula

5

をで私のために明確ではありませんでした以前の答えを(結合するにはSVG文字列を取得する方法は次のとおりです:

var str = $('<div>').append($('#plan #rect1').clone()).html(); 
+0

非常に良い、ありがとう – nodrog

関連する問題