Jump to content


Photo

Após Contar Elementos Filhos, Mostrar De 3 Em 3


  • Faça o login para participar
29 replies to this topic

#1 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 04/02/2010, 09:40

Fala galera...

Estou com outro pepino que estou tentando aprender, fiz do meu jeito, mas o cálculo saía sempre falho... não sei pq...

Tenho uma lista, vamos supor que, com 20 itens.

Quero mostrar de 3 em 3 em intervalos de 8 segundos, com fade entre eles... porém quando fiz o calculo para fazer de 3 em 3, ele fazia os 3 primeiros, e depois melava tudo... pulava 2, fazia 1, pulava 2 fazia 1, muito estranho... então estou pedindo arrego de novo :wacko:

[codebox] <script>
var count = 0;
$(function(){
$(".listaTexto li").each(function(){
$(".listaTexto li:eq("+ count +"):visible").css("display","none");
count ++;
});
});
</script>
[/codebox]

acho q isso não está certo, mas é aonde eu parei...

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#2 Édipo Costa Rebouças

Édipo Costa Rebouças

    Veterano

  • Ex-Admins
  • 1079 posts
  • Sexo:Masculino
  • Localidade:Brasil - São Paulo

Posted 04/02/2010, 11:59

vou colocar um código que fiz aqui, eu não testei, então provavelmente vcai dar algum erro, os primeiros códigos são exemplos.

[codebox]
$(document).ready(
function(){
var intervalID = window.setInterval(//pode-se entender o interval como um loop que executada cada iteração a x segundos. recebe 2 parametos (funcao,intervalo_em_ms)
function(){ // pode-se entender o interval como um loop que executada um função cada iteração a x segundos.
alert('teste');
},
8000);// 8 segundos, ou 8000 milesegundos

var timeoutID = window.setTimeout( //o timeout executa a função depois do milisegundos definidos,
function(){ // no caso, esta função vai ser executada depois de 8 segundos
alert('teste');
},
8000);// 8 segundos, ou 8000 milesegundos

/*
tanto o setTimeout quando o setInterval retornam um ID, que serve para identifica-los
esse identificador serve para para o setInterval ou cancelar um setTimeout com a funçaõ window.clearInterval
vou usar um setTimeout para cancelar o setInterval depois de 32 segundos
*/

var timeoutID2 = window.setTimeout(
function(){
window.clearInterval(intervalID);
},
32000);

/*sobre dar um fade nos seus slides
dentro algumas opções eu escolhi essa.
você seleciona todos os slides primeiro e um contador e uma pra guardar quantos slides nós temos.
*/

var $slides = $('.listaTexto li');
var countSlides = 0;
var sizeSlides = $slides.size();

var slidesIntervalID = window.setInterval(
function(){
if(countSlides+3>sizeSlides)
countSlides = 0;
var $pieces = $slides.slice(countSlides,countSlides+3);
$slide.hide('slow', function(){
$pieces.show('slow');
countSlides = countSlides+3;
});
},
8000
);


});


[/codebox]

Attached Files


Edição feita por: Édipo Costa Rebouças, 04/02/2010, 12:03.


#3 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 04/02/2010, 14:08

Fala édipo, quase lá! rs

Só que o contador está sempre zerando! Engraçado que eu dou um alert de onde está o count e ele está somando certinho! :huh: e está sempre começando com a lista cheia...

[codebox]<script type="text/javascript" src="http://ajax.googleap...n.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var slides = $('.listaTexto li');
var countSlides = 0;
var sizeSlides = slides.size();
var slidesIntervalID = window.setInterval(
function(){
if(countSlides +3 > sizeSlides){
countSlides = 0;
}else{
alert("Caiu no else");
}
var pieces = slides.slice(countSlides,countSlides+3);
slides.hide('slow', function(){
pieces.show('slow');
countSlides = countSlides+3;
});
},2000);
});
</script>
<ul class="listaTexto">
<li>Teste 1</li>
<li>Teste 2</li>
<li>Teste 3</li>
<li>Teste 4</li>
<li>Teste 5</li>
<li>Teste 6</li>
<li>Teste 7</li>
<li>Teste 8</li>
<li>Teste 9</li>
</ul>
[/codebox]

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#4 Édipo Costa Rebouças

Édipo Costa Rebouças

    Veterano

  • Ex-Admins
  • 1079 posts
  • Sexo:Masculino
  • Localidade:Brasil - São Paulo

Posted 04/02/2010, 22:05

<script type="text/javascript">
 	$(document).ready(function(){
 	var slides = $('.listaTexto li');
 	var countSlides = 0;
 	var sizeSlides = slides.size();
 	var slidesIntervalID = window.setInterval(
 	function(){
 	if((countSlides +3) > sizeSlides){
 	countSlides = 0;
 	}else{
 	}
 	var pieces = slides.slice(countSlides,countSlides+3);
 	slides.hide('fast');
 	pieces.show(); 	
 	countSlides = countSlides+3;
 	},2000);
 	});
</script>

pronto, o problema esta em incrementar o contar dentro do callback do show, pois o JQuery vai fazer um each nós elementos e executar a função do callback para todos os elementos então seja, como eu tinha três elementos no pieces, ele somava até nove e quando chamava a função denovo zerava.

#5 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 05/02/2010, 09:52

entendi... tinha que ser fora da function, senão ia zerar sempre...

[codebox] $(document).ready(function(){
var slides = $('.listaTexto li');
var countSlides = 0;
var sizeSlides = slides.size();
var slidesIntervalID = window.setInterval(
function(){
if((countSlides +3) > sizeSlides){
countSlides = 0;
}
var pieces = slides.slice(countSlides,countSlides+3);
slides.hide('fast');
pieces.show();
countSlides = countSlides+3;
},3000);
});
[/codebox]

Mas agora a dúvida... ele sempre está abrindo a página com todos abertos... não deveria abrir os 3 primeiros, já que está tudo dentro do document.ready?

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#6 Édipo Costa Rebouças

Édipo Costa Rebouças

    Veterano

  • Ex-Admins
  • 1079 posts
  • Sexo:Masculino
  • Localidade:Brasil - São Paulo

Posted 05/02/2010, 10:05

não, porque quando você chama o setInterval ou o setTimeout, ele só vai executar a função depois de dos do tempo definido. A primeira vez que ele chama a função, é depois dos x milisegundos.

#7 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 05/02/2010, 10:19

pior q nao posso nem inverter os parâmetros /gambiarra :assobio:

tem alguma forma de fazer com que o script seja executado da forma que falei? Pois senão, na hora de listar o que preciso, a primeira vez vai quebrar o layout :wacko:

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#8 Édipo Costa Rebouças

Édipo Costa Rebouças

    Veterano

  • Ex-Admins
  • 1079 posts
  • Sexo:Masculino
  • Localidade:Brasil - São Paulo

Posted 05/02/2010, 10:47

dá um hide nos outros elementos e incrementa o contador +3 antes do setInterval

#9 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 05/02/2010, 12:41

não deu :ponder:

	slides.hide('fast');
var countSlides = +3;
var sizeSlides = slides.size();
var slidesIntervalID = window.setInterval(
function(){
if((countSlides +3) > sizeSlides){
countSlides = 0;
}
var pieces = slides.slice(countSlides,countSlides+3);
slides.hide('fast');
pieces.show();
countSlides = countSlides+3;
},5000);
});
_linenums:0'>$(document).ready(function(){ var slides = $('.listaTexto li');<strong class='bbc'> slides.hide('fast'); var countSlides = +3;</strong> var sizeSlides = slides.size(); var slidesIntervalID = window.setInterval( function(){ if((countSlides +3) > sizeSlides){ countSlides = 0; } var pieces = slides.slice(countSlides,countSlides+3); slides.hide('fast'); pieces.show(); countSlides = countSlides+3; },5000); });

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#10 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 08/02/2010, 08:18

alguem? :assobio:

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#11 Édipo Costa Rebouças

Édipo Costa Rebouças

    Veterano

  • Ex-Admins
  • 1079 posts
  • Sexo:Masculino
  • Localidade:Brasil - São Paulo

Posted 08/02/2010, 12:02

alguem? :assobio:


é pra vocÊ dar um hide do quarto em diante, não em todos.

#12 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 12/02/2010, 08:43

consegui! Valeu Édipo! Usei um treco de índice pra pegar os superiores

[codebox] $(document).ready(function(){
var slides = $('.listaTexto li');
var countSlides = +3;
var sizeSlides = slides.size();
$('.listaTexto li:gt(2)').hide('fast');
var slidesIntervalID = window.setInterval(
function(){
if((countSlides +3) > sizeSlides){
countSlides = 0;
}
var pieces = slides.slice(countSlides,countSlides+3);
slides.hide('fast');
pieces.show();
countSlides = countSlides+3;
},5000);
});
[/codebox]

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#13 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 01/10/2017, 09:01

Nolvadex For Sale Usa Viagra Generique Indien cialis buy online Zithromax 2 Pills Sore Throat Antibiotic Amoxicillin Protocol Whats Amoxicillin Clavulanate

#14 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 15385 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 03/10/2017, 12:34

Cephalexin And Breastfeeding Acheter Levitra En Ligne cialis Want To Buy Provera Irregular Periods Discount fedex isotretinoin with overnight delivery medication overseas

#15 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 15385 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 06/10/2017, 12:56

Inflamed Mouth Keflex Adult Amoxicillin Dosage viagra Kamagras Online Australia Acticin Medicine
Fluoxetine Bioxetin buy viagra online Mail Order Medications From Canada
Vantin viagra Liquid Dramamine Xenical En Suisse Cialis For Daily Use




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq