« 前のひとこと | トップページ | 次のひとこと »

aboutme:138309

Javascript のソース内で XML タグを直に記述している例があってそれをマネていたのだが、それが E4X という名の機能であることをやっと知った。…が、すごい使いにくい。配列 Array を含むようなのはどうやって記述すればいいんだ?

JRF 2011年4月12日 (火)

<tag>text</tag> と書くのが普通だが、<tag>{varname}</tag>とすると varname の内容が tag に挟まれる。このとき、varname が < や > を含んでいると自動的にエスケープされてしまうため、この記述のままだと、tag の中に変数に入った xml 文書を書き込むということができない。(やる方法を私は見つけられなかった。)

JRF 2011年04月12日 4535

{} のテクニックは、タグにも属性にも使え <{tag} {attr}={value}>{cont}</{tag}> みたいな使い方もできるそうだが、<div class="a-{id}">...</div> みたいに属性値の一部に含ませるような器用なことはできない。

JRF 2011年04月12日 9175

で、どうしたかというと、xml を文字列に直したあと、class 属性の中の {id} は、form で使っていたので {id} と書かれる部分がほかにないから、{id} と書いている部分を replace した。また、タグ内で、Array を書きたちときは、一端 <place>place</place> などと書いておいて、< > は変数から書き換わったやつには含まれないはずなので、それを replace した。

JRF 2011年04月12日 0356

例えば…、

var xml =
<array class="a-{id}">
<value><place>place</place></value>
</array>;

var r = xml.toString().replace(/\{id\}/g, id).replace(/\s*<place>place<\/place>\s*/, arraystr);

…などとする。<place> を置きかえるときに \s で空白も取っておかないと、余計な空白が入って困ることがあった。

JRF 2011年04月12日 5244

« 前のひとこと | トップページ | 次のひとこと »

トラックバック


トラックバックのポリシー

他サイトなどからこの記事に自薦された関連記事(トラックバック)はまだありません。