aboutme:138309
Javascript のソース内で XML タグを直に記述している例があってそれをマネていたのだが、それが E4X という名の機能であることをやっと知った。…が、すごい使いにくい。配列 Array を含むようなのはどうやって記述すればいいんだ?
JRF 2011年4月12日 (火)
{} のテクニックは、タグにも属性にも使え <{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
<tag>text</tag> と書くのが普通だが、<tag>{varname}</tag>とすると varname の内容が tag に挟まれる。このとき、varname が < や > を含んでいると自動的にエスケープされてしまうため、この記述のままだと、tag の中に変数に入った xml 文書を書き込むということができない。(やる方法を私は見つけられなかった。)
JRF 2011年04月12日 4535