JavaScriptでは、無名関数の中で "arguments.callee()"を実行することにより、無名関数を再帰的に呼び出すことができる。
※Javaをやる人の間では匿名関数と呼ぶのが主流だが、JavaScriptをやる人は無名関数と呼ぶ場合が多い?
例:ID "foo" をもつDOM要素の、5階層以上の親に当たるTABLE要素を探し出してstyle属性をクリアする。
<script type="text/javascript"> (function(id){ var elm = document.getElementById(id); // 指定されたidをもつ要素 if(elm){ var cnt=0; var target = (function(o){ // 再帰的な無名関数 if(cnt >= 5 && o.tagName == 'TABLE') { return o; // 条件を満たす要素 } else { cnt++; return arguments.callee(o.parentNode); // 親要素に対し無名関数を適用 } })(elm); target.style.cssText = ''; // 目的の要素のスタイルを変更 } })('foo'); </script>
0 件のコメント:
コメントを投稿