getNodesBy NameIndexed

Publicado por Fernando Rodrigo Bilinski 18/02/2005

[ Hits: 3.851 ]

Download getNodesByNameIndexed.js




Consegue todos os elementos que possuem o 'name' que coincida com a string ou expressão regular dada.

Semelhante a função nativa getElementsByName com o diferencial de indexar os elementos da mesma forma que seriam indexados no PHP, portanto se o nome do elemento represanta um elemento de array, ele ira retornar como uma array.

  



Esconder código-fonte

function getNodesByNameIndexed( node, name ){
   var re = new RegExp( name + "[\[]([0-9]+)\]([\[]([0-9]+)\])?" );
   var nodes = getNodesByName( node, re );
   var nodesIndexed = new Array();
   var index;
   for( var i = 0; i < nodes.length; i++ ){
      nome = nodes[i].getAttribute('name');
      index = re.exec( nome );
      if( typeof(index[3]) != "undefined" ){
         aux = getNodesByNameIndexed( node, name + "[\[]"+ index[1] +"\]" );
      }else{
         aux = nodes[i];
      }
      nodesIndexed[index[1]] = aux;
   }
   return nodesIndexed;
}

function getNodesByName( node, name ){
   var nodes = new Array();
   var childs = node.childNodes;

   for( var i = 0; i < childs.length; i++ ){
      if( typeof(name) == "string" ){
         if( childs[i].nodeType != "1" )
            continue;

         if( childs[i].getAttribute('name') == name ){
            nodes.push( childs[i] );
         }
      }else if( typeof( name.test ) == "function" ){
         if( childs[i].nodeType != "1" )
            continue;

         if( name.test( childs[i].getAttribute('name') ) ){
            nodes.push( childs[i] );
         }
      }
      if( childs[i].hasChildNodes() ){
         nodes = nodes.concat( getNodesByName( childs[i], name ) );
      }
   }
   return nodes;
}

Scripts recomendados

radiograunafm

Manda Mensagem Icq ao clicar no link

Identificando o navegador do cliente

veja seu HD

Campo de pesquisa do VOL no Mozilla Firefox !!!


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts