Ir para conteúdo

POWERED BY:

Arquivado

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

Gustavo_DesignWeb

[Resolvido] Problema com laço FOR

Recommended Posts

Olá pessoal,

 

Tenho dois laços FOR dentro de uma função. Acontece que um não deixa o outro funcionar:

 

function ShowOutrasNoticias(lista, aba) {

 

/*aqui o script pega o parametro lista para identificar a lista a ser exibida e a exibe*/

 

var ListaAtiva = document.getElementById(lista);

ListaAtiva.style.display = "block";

 

/*aqui o script oculta todas as outras listas de noticias existentes exceto a que for exibida anteriormente */

 

var ULs = document.getElementById('OutrasNoticias').getElementsByTagName('ul');

for (var i=1; i<=ULs.length; i++) {

if(ULs.id != lista) {

var tete = ULs.id;

document.getElementById(tete).style.display = "none"

}

}

 

/*aqui o script pega o parametro aba para identificar a aba a ser destacada e a destaca*/

 

var ItemAba = document.getElementById(aba);

ItemAba.className = "AbasNoticiasDestaque";

 

/*aqui o script oculta o destaque de todas as outras abas existentes exceto a que foi destacada anteriormente */

 

var LIs = document.getElementById('AbasNoticias').getElementsByTagName('li');

for (var x=0; x<=LIs.length; x++) {

if(LIs[x].id != aba) {

var AbaFundo = LIs[x].id;

document.getElementById(AbaFundo).className = "AbasNoticias";

}

}

}

 

Como podem ver esse script é de um menu de abas, no qual primeiro exibe a lista de noticias no qual o usuario clicou depois destaca a aba que clicou.

 

 

Acontece que o segundo laço FOR não funciona, erro tbm não dá, apenas não funciona.

 

agradeço antecipadamente qualquer ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá um

alert(LIs.length);

e vê o valor que aparece, pra saber se está pegando corretamente esses elementos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já dei pra ver. No primeiro elemento que pega a quantidade de ULs existem 4 e no segundo que pega a quantidade de LIs tem 3.

 

O que notei é que so está rodando o primeiro laço, eu inverti o script de modo que a parte do script que destaca a aba viesse primeiro e o que exibe a lista ocultando as demais vinhesse depois, resultado: as abas estao funfando legal agora é a lista que não troca. Ou seja, o primeiro laço que vier no script funciona mais o proximo não.

 

Será que tem essas coisas de ponteiro do laço? será que tem que reiniciar algum ponteiro do laço?

 

Pra ficar mais facil entender acesse: http://www.portalfolha.com/index%20-%20Copy.php

Esse menu de abas que exibe as ultimas noticias, + vistas e + comentadas, que você vê ai logo de cara é que é o problematico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, o Firefox acusa um erro aqui:

Error: ULs[i] is undefined
Source File: http://www.portalfolha.com/Scripts/meus_scripts.js
Line: 32

Verifique isso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

É,

 

realmente está dando esse erro, eu já tinho visto. Não sei o pq dele.

 

Porém ele naum impedia que o script funcionasse iniciamente, deixei pra resolvê-lo dpois.

 

Naum acho q seja ele o problema pois, como disse antes jah verifiquei que quando retiro um dos lanços FOR o outro funfa legal.

 

De qualquer maneira vou tentar verificar pq esse erro tah aparecendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei o problema:

for(var i=1; i<=ULs.length; i++)...

Seu for tá configurado errado. Faça assim:

for(var i = 0; i < ULs.length; i++)...

Que vai...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei o problema:

for(var i=1; i<=ULs.length; i++)...

Seu for tá configurado errado. Faça assim:

for(var i = 0; i < ULs.length; i++)...

Que vai...

 

 

Aí Rich, o problema era quase este msm.

 

O FOR que criei iniciava-se atribuindo o valor "1" à variavel "i". Isto pq dentro da div 'OutrasNoticias' existiam 4 Listas(UL) nas quais a primeira era a lista da aba e eu queria isolar do laço esta lista para que ela não fosse ocultada.

 

Daí retirei esta primeira lista da div 'OutrasNoticias' coloquei-a em outra div acima e mudei o laço atribuindo o valor "0" fazendo com que o laço comece da primeira lista da div.

 

Se não fosse o Rich nã teria mexido nisso, e naum teria descoberto como resolver essa tremenda BESTEIRA. Fica aí a experiência.

 

Valeu brother, BRIGADÃO!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas moderadores fazem a mudança

 

Apenas informe que resolveu e sempre que possível a solução adotada

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.