getNodesBy NameIndexed

Publicado por Fernando Rodrigo Bilinski 18/02/2005

[ Hits: 3.121 ]

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

Barra de busca Google

Quebra de página

getNodesByName

Formail excelente

Botão para Adicionar seu Site como Home (Página Inicial)


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts