ノードツリーを順に処理する。
昨日http://d.hatena.ne.jp/Mars/20080617の続き。
ちょっとインターフェースを変更名前も変えた。
テキストノードを処理しないオプションもつけた。
// ノードツリーを順に処理する。 // nodeTree(対象element,func,option) // option - true:テキストノードもfuncで処理する / false:しない function nodeTree(T,E,option){ var C = T; while(C){ if(C.firstChild) C=C.firstChild; else if(C.nextSibling) C=C.nextSibling; else { if(C == T) return; while(C){ if(C.parentNode == T) return; C = C.parentNode; if(C.nextSibling) { C=C.nextSibling; break; } } } if(C && (option || C.nodeType==1)) E(C); } }
使用例 id=sampleの要素を頂点とするノードツリーの内容を表示
nodeTree(document.getElementById('sample'), function(O){ alert(O.nodeName); }, true);