2017-03-04 16 views
-1

私はSVGについて少し知っていますが、テキストパラメータの変数を作成しようとしていますので、(変数)テキストだけで変化するSVGマークアップを繰り返して作成できます。これは私が(そのAPI私が使用しているサイトから借りた)何ができるかであるSVG変数のテキスト

'<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg">' + 
 
    '<rect stroke="black" fill="${FILL}" x="1" y="1" width="22" height="22" />' + 
 
    '<text x="12" y="18" font-size="12pt" font-family="Arial" font-weight="bold" ' + 
 
    'text-anchor="middle" fill="${STROKE}" >hello world 
 
    </text></svg>'

しかし、これは私が好きな(またはそれと同じように動作何か)どうなるかです:

'<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg">' + 
 
    '<rect stroke="black" fill="${FILL}" x="1" y="1" width="22" height="22" />' + 
 
    '<text x="12" y="18" font-size="12pt" font-family="Arial" font-weight="bold" ' + 
 
    'text-anchor="middle" fill="${STROKE}" >"${TEXT}"</text></svg>'

ので、私は動的にテキストを変更することができます。

+0

あなたには、いくつかの問題に実行していますか? – henry

+0

実際、問題は "$ {TEXT}"を使うことができないということです(それは私が推測する角括弧に埋め込まれていません)。私は動的に$ {FILL}を変更することができますが、例えば.replaceを使用すると、テキストではできません。 – Uzebeckatrente

+0

i8私はそれを理解しました – Uzebeckatrente

答えて

1

私はそれを理解しました。振り返ってみると、それはちょっとばかげた質問だった。

var svgMarkup = '<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg">' + 
 
\t \t '<rect stroke="black" fill="${FILL}" x="1" y="1" width="22" height="22" />' + 
 
\t \t '<text x="12" y="18" font-size="12pt" font-family="Arial" font-weight="bold" ' + 
 
\t \t 'text-anchor="middle" fill="${STROKE}" >'+ varName +'</text></svg>';

0

あなたが実際に${TEXT}を使用することができ、それが(IE以外の)動作します:ただ、通常の文字列連結のよう+ varName +と障害のある$ {TEXT}タグを交換してください。

これの名前はtemplate literalです:

テンプレートリテラルは、組み込み式を許可する文字列リテラルです。

しかし、これを行うには、文字列全体をバックティック( `)で囲む必要があります。ここで

が(少しの変更で)あなたの文字列を使用して、作業のデモです:

var FILL = "tan", STROKE = "black", TEXT = "Hello World"; 
 

 
var svgMarkup = `<svg xmlns="http://www.w3.org/2000/svg" width="100" height="24" 
 
xmlns="http://www.w3.org/2000/svg"><rect stroke="black" fill="${FILL}" x="1" y="1" 
 
width="22" height="22" /><text x="12" y="18" font-size="12pt" font-family="Arial" 
 
font-weight="bold" text-anchor="start" fill=${STROKE}>${TEXT}</text></svg>`; 
 

 
var div = document.getElementById("foo"); 
 
div.innerHTML = svgMarkup;
<div id="foo"></div>

関連する問題