Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

berkowitz

tratar código html como XML

Recommended Posts

Pessoal, olá.

Estou com a seguinte dúvida: Eu estou criando um script para percorrer as tabelas existentes no site:

 

var quadro = document.getElementsByTagName("table");var quadro2 = document.getElementsByTagName("tr");var quadro3 = document.getElementsByTagName("td");for(i=0;i<quadro.length;i++) {if(quadro[i].summary.toLowerCase().indexOf('signin') >= 0) {quadro2[0].style.display = 'none';}}
o problema é: Fica um pouco chato eu fazer vários "FOR" pra pegar as TDs, TRs de cada tabela. Sei que com o javascript posso tratar meu código html como XML, pegando nós filho, etc. Como faço isso? dá pra fazer com que eu faça um FOR pra pegar as tabelas, e utilizar algo como 'quadro.firstChild' para pegar as TRs e TDs de cada tabela?? :blink:

 

Espero que tenha conseguido expor corretamente minha dúvida.

 

VALEW!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caracas!

Gostei dessa desafio seu.

Depois de 1 hora e pouco quebrando a cabeça montei um algoritmo que faz o que você pediu e mais um pouco.

 

Vou postar aqui somente o código JS, em seguida postarei o exemplo:

 

function getTagsIn(obj,tagname){ return obj.getElementsByTagName(tagname); }function actOnElements(/*container,[tags]*,fncString,onlyLastElement*/){/*AUTOR: Leandro Nascimento CamargoE-MAIL: lean-dro-ico@gm-ail.c-om (sem os hífens)SITE: www.websaudavel.comLICENSA: Livre. Mas preserve as informações sobre a autoria00000000000000000000000000000000000000000000	DESCRIÇÃO DE PARAMÊTROS00000000000000000000000000000000000000000000..Parâmetros mínimos necessários: 4>1.container: Objeto que contém as tags a serem varridas e "acionadas">2.[tags]*: Uma ou mais tagnames (OBS.: a ordem reflete na hierarquia)>3.fncString: string com o nome da funçao (ação a ser aplicada aos elementos)>4.onlyLastElement: bool que informa se a ação será aplicada apenas à última tagname*/	var args=actOnElements.arguments;	var n_args=args.length;	if(n_args<4)return false;	var objContainer=args[0];	var tags=new Array();	for(var i=1;i<n_args-2;i++) tags[tags.length]=args[i];	var fncString=args[n_args-2]; //string da função a ser executada	var onlyLastElement=args[n_args-1];	var elems=getTagsIn(objContainer,tags[0]);	for(var i=0;i<elems.length;i++)	{  if(tags.length>1) // A FAZER: colocar esse if de fora do for  { 	 var arrParam=new Array(); 	 arrParam[arrParam.length]=elems[i]; 	 for(var j=1;j<tags.length;j++) arrParam[arrParam.length]=tags[j]; 	 if(!onlyLastElement) eval(fncString).apply(this,new Array(elems[i])); 	 arrParam[arrParam.length]=fncString; 	 arrParam[arrParam.length]=onlyLastElement; 	 actOnElements.apply(this,arrParam); // RECURSIVIDADE  }  else  { 	 eval(fncString).apply(this,new Array(elems[i]))  }	}}function teste(obj){ obj.style.color="#aaa"; }
Aqui segue o exemplo do código funcionando:

www.websaudavel.com/testes/imasters.htm

 

OBS aos admin:

Po, essa identação do código tá muito mal suportada....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim...com certeza voc~e terá dúvidas sobre o código e sobre a funcionalidade e a flexibilidade da função...Então pode perguntar que eu terei o prazer em responder... :D ::Obrigado pela dúvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.