[thelist] DOM: previousSibling and LI tags

VOLKAN ÖZÇELİK volkan.ozcelik at gmail.com
Fri Jan 20 15:45:48 CST 2006


> sweep = function(obj) {
>   if (!obj) obj=document;
>   var children=obj.childNodes;
>
>   for (var j = children.length-1; j >= 0; j--) {
>   // if node is a whitespace-only text node
>   if (children[j].nodeType==3 && /^\s*$/.test(children[j].nodeValue))
>   obj.removeChild(children[j]);
>   else if (children[j].hasChildNodes())
>   sweep(children[j]);
>   }
> }
>

A yes, you're right. Traversing the nodes in reverse order is better.

Another option would be caching the node references to an array:

pseudocode (because I'm lazy):

arCache = new Array

for each child node in obj
   arCache.push childnode
next

for i=0 to arCache.length
   if the ith node is whitespace remove it.
   else if it has children call this method recursively.
next

...

Although it adds an extra for loop, it guarantees to be independent of
the "live"liness of the
DOM nodes.

I think PPK should open a "most complicated, mind-crushing,
brain-teasing  nextSibling wrapper implementation" contest :))


Cheers,
--
Volkan Ozcelik
+>Yep! I'm blogging! : http://www.volkanozcelik.com/volkanozcelik/blog/
+> My projects/studies/trials/errors : http://www.sarmal.com/



More information about the thelist mailing list