JavaScriptで入れ子になった要素を作成する時用の関数
Greasemonkeyとかで複雑な要素作る時用。
var newTag = function (tag) { var elem = document.createElement(tag); for (var i = 1; i < arguments.length; i++) { elem.appendChild(arguments[i]); } return elem; }; var newText = function (text) { return document.createTextNode(text); };
newTag関数は可変長引数で、第1引数のタグを作成し、第2引数以降が与えられた場合子ノードとして順に追加してから返す。
newText関数はおまけ。
例として以下のような要素を作成する場合
<table> <tr><td>三浦</td><td>20</td></tr> <tr><td>菊地</td><td>16</td></tr> <tr><td>如月</td><td>15</td></tr> </table>
newTag('table', newTag('tr', newTag('td', newText('三浦')), newTag('td', newText(20))), newTag('tr', newTag('td', newText('菊地')), newTag('td', newText(16))), newTag('tr', newTag('td', newText('如月')), newTag('td', newText(15))));
のように書ける。
直接createElementとappendChildで追加していく方法や、
要素のinnerHTMLをいじる方法よりは短く視認性保って書けるはず。
こういう場合って他にセオリーみたいなものがあるのかな。