ciao,

sto scrivendo un paio di funzioni per navigare il DOM in maniera semplice in uno script Greasemonkey, es:

var LastestNewsLinks = $('myListId').byTag('LI')[0].byClass('new');

Lo so che esistono jQuery e Prototype e compagnia bella, ma mi serviva uno script molto meno elaborato.
Le funzioni funzionano se chiamate individualmente, ma se concatenate presentano dei problemi.
Nell'esempio sopra indicato, la funzione 'byTag' colleziona correttamente i tags, ma restituisce "undefined" anzichè un array di elementi... Qualcuno sa dirmi perchè??

Grazie!

----
Codice PHP:
(function(){

       function 
byId(tagId){
               return 
document.getElementById(tagId);
       }

       function 
byTag(tagName,elm){
               var 
elm elm || document;
               var 
returnElements = [];
               var 
elements = (tagName == "*" && elm.all)? elm.all :
elm.getElementsByTagName(tagName);
               var 
length elements.length;
               for(var 
i=0i<lengthi++){
                       
returnElements.push($(elements[i]));
               }
               return 
returnElements;
       }

       function 
byClass(classNameelmtag){
               var 
testClass = new RegExp("(^|\\s)" className "(\\s|$)");
               var 
tag tag || "*";
               var 
elm elm || document;
               var 
elements byTag(tag,elm);
               var 
returnElements = [];
               var 
current;
               var 
length elements.length;
               for(var 
i=0i<lengthi++){
                       
current elements[i];
                       if(
testClass.test(current.className)){
                               
returnElements.push($(current));
                       }
               }
               return 
returnElements;
       }

       function $(
q){
               var 
e;
               
e=(typeof q=='string')?byId(q):q;
               
e.byTag=function(x){
                       
byTag(x,e);
               }
               
e.byClass=function(x){
                       
byClass(x,e);
               }
               return 
e;
       };

})();