Jump to content
Carcleo

setInterval não para após restartado

Recommended Posts

Estou tentando criar um slideshow mas personalizado sem depender de biblioteca de terceiros (salvo, jQuery);

 

O objetivo é:

 

A) O slide rodar interminavelmente.

B) Ao passar o mouse no slide, ele deve parar;

C) Ao deixar o slide, ele deve continuar rodando de onde parou!

D) AQUI ESTÁ O PROBLEMA => Ao passar o mouse novamente o interval deve parar. Mas não está parando,

function intervalo () {
$(".slider > #next").click ();
}

interval = setInterval(intervalo,4000);

$(".slider > ul > li").mouseover(function(){
clearInterval(interval);
}).mouseout(function(){
interval = setInterval(intervalo,4000);
});

$(".slider > #back").click ( function(){
	var liMover = $('.slider ul li:last-of-type'); // copia o conteudo da última
	$('slider ul li:last-of-type').remove(); // remove a última
	$(liMover).insertBefore('.slider ul li:first-of-type'); // insere antes da primeira
});

$(".slider > #next").click ( function(){
	var liMover = $('.slider ul li:first-of-type'); // copia o conteudo da primeira
	$('.slider ul li:first-of-type').remove(); // remove a primeira
	$(liMover).insertAfter('.slider ul li:last-of-type'); // insere depois da última
});	
* {
	margin: 0;
	padding: 0;
}

body {
		display: flex;
		width: 1000px;
		margin: 0 auto;
}

.slider {
	position: relative;
	display: flex;
	flex-direction: column;
	width: 1000px;
	height: 150px;
	overflow: hidden;	
	border: 1px solid #000;
}

.slider > ul {
	display: flex;
	flex-wrap: wrap;
	width: 5000px;	
}

.slider > ul > li {
	display: flex;
	width: 500px;
	height: 150px;
}

.slider > button {
	position: absolute;
	display: flex;
	justify-content: center;
	top: calc(45% - 15px);
	width: 30px;
	height: 30px;
	opacity: .2
}

.slider > button:hover {
	opacity: 1;
	cursor: pointer;
}

.slider > button#back {
	left: 10px;
}

.slider > button#next {
	right: 10px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="slider">

	<ul>
	  <li> Slide  1 </li>
	  <li> Slide  2 </li>
	  <li> Slide  3 </li>
	  <li> Slide  4 </li>
	</ul>		

	<button id="back"> BACK </button>
	<button id="next"> NEXT </button>

</div>

O que estará errado!?

Share this post


Link to post
Share on other sites
let Timer;

function intervalo() {
	$(".slider > #next").click ();
};

Timer = setTimeout(function() {
	intervalo();
}, (4000));

$(".slider > ul > li").mouseover(function(){
	clearInterval(Timer);
}).mouseout(function(){
	Timer = setTimeout(function() {
		intervalo();
	}, (4000));
});

$(".slider > #back").click (function(){
	const liMover = ($(".slider ul li:last-of-type"));
	$(".slider ul li:last-of-type").remove();
	$(liMover).insertBefore(".slider ul li:first-of-type");
});

$(".slider > #next").click (function(){
	const liMover = ($(".slider ul li:first-of-type"));
	$(".slider ul li:first-of-type").remove();
	$(liMover).insertAfter(".slider ul li:last-of-type");
});

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By marsolim
      fala rapaziada tudo bem? sabe me dizer se tem diferença de performance, de compatibilidade e etc e tal entre o jquery $(this).val() e o javascript puro this.value? tava tentando pesquisar aqui mas não achei nada sobre.
      grato
    • By juliosertori
      Olá boa tarde, tudo bem?
       
      Tenho uma consulta de CEP via AJAX, na qual ele seleciona a cidade no SELECT cidades:
       
      $("#cidade").val(dados.localidade);
       
      O problema é que tem que estar exatamente igual nos 2 lados, na consulta e no select.
       
      Como fazer para não diferenciar minúsculas e maiúsculas, e caracteres especiais?
       
      Obrigado!
    • By juliosertori
      Olá tudo bem?
       
      Tenho campos de produtos que somam os valores e multiplicam pela quantidade, na maioria das vezes o valor sai corretamente em um INPUT com MASK de Moeda, mas alguns valores sai por exemplo dessa forma:
       
      8984.960000000001
       
      O que faz com que não fique corretamente para mandar no POST e tratar os dados depois, na maioria das vezes ele vem correto, por exemplo:
       
      R$ 8,898.10
       
      Não encontrei uma forma dele tratar quando tiver várias casas ele concertar etc.
    • By Carcleo
      Pessoal, bom dia!
       
      Tenho o código abaixo que faz um efeito de parallax e está funcionando normalmente
      CSS
      #top {     background: url("img/1.jpg");     height: 300px; } #mid {     background: url("img/2.jpg");     height: 400px; } #bot {     background: url("img/3.jpg");     height: 500px; } HTML
      <script type="text/javascript" src="jquery.js"></script>   <body>   <div id="top" class="prlx"></div>   <div id="mid" class="prlx"></div>   <div id="bot" class="prlx"></div> </body>  JQUERY
      $('.prlx').each(function() {        var obj = $(this);        obj.css('background-position', 0);     obj.css('background-attachment', 'fixed');        $(window).scroll(function() {     var offset = obj.offset();     var yPos = -($(window).scrollTop() - offset.top) / 10;     var bgpos = '50% ' + yPos + 'px';     obj.css('background-position', bgpos);   });    }); Fui aplicar no meu site 
       
      https://acweb.net.br/
       
      e o efeito parallax não funcionou embora no inspector dá para ver os cálculos sendo feitos e adicionado às sections
       
      Alguém me ajuda a descobrir onde errei?
       
      Já estou faz um tempão e não acho!
       
      As sections afetadas são as que começam com os textos
       
      Fazemos todo o trabalho por você e contato, 
    • By juliosertori
      Olá galera tudo bem?
       
      Tenho um While em Javascript, e preciso dentro dele um JSON, ex:
       
      while ( qtdProd <= qtdProdutos ) { { "cod_barras": "SEM GTIN", "codigo_produto": 1, "nome_produto": "Coca-cola lata 350 ml", "ncm": "44071100", "unidade": "UN", "quantidade": 1.00, "valor_unitario": 3.5, "compoe_valor_total": 1 } qtdProd++; } Logicamente assim não funciona, mas não encontrei como inserir corretamente
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.