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 件のコメント:
コメントを投稿