0

次のようなグループを含む SVG ドキュメントがあります。

<g xml:id="id10883">
     <textArea fill="#ffffff" xml:id="id1900" xml:space="preserve">[SPX][departure]</textArea>
</g>

[SPX][departure] は、実行時に JavaScript マップの適切な値に置き換えられます。同様のデータをフィル値として入力するにはどうすればよいですか。

<g xml:id="id10883">
     <textArea fill="[SPX][color]" xml:id="id1900" xml:space="preserve">[SPX][departure]</textArea>
</g>
4

1 に答える 1

1

代わりに、要素にクラスを追加してみませんか?

<g xml:id="id10883">
    <textArea class="spx_color" xml:id="id1900" xml:space="preserve">[SPX][departure]</textArea>
</g>

次に、次のことを簡単に実行できます。

var spx_color = document.getElementsByClassName("spx_color");
for (var i = 0, l = spx_color.length; i < l; ++i) {
    spx_color[i].setAttribute("fill", "#ffffff");
}


ただし、プレースホルダーを保持したい場合は[SPX][color]、次のようにすることができます。

var elements = document.getElementsByTagName("*");
for (var i = 0, l = elements.length; i < l; ++i) {
    if (elements[i].getAttribute("fill") == "[SPX][color]") {
        elements[i].setAttribute("fill", "#ffffff");
    }
}

このコードは、すべての DOM 要素を繰り返し処理するため、それほど効率的ではないことに注意してください。そのため、既存のコードに応じて変更する必要があります (例:textArea要素のみを取得...)。

于 2012-10-06T00:20:30.133 に答える