Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

194
Visualizações
Mostrar un div aleatorio al hacer clic excepto el actual

Hice un control deslizante de cita simple que cambia la oración en la pantalla aleatoriamente con cada clic, pero no quiero que muestre la misma cita dos veces seguidas. ¿Cómo puedo excluir la cotización actual del algoritmo Math.random y hacer que el control deslizante muestre cualquier otra cotización con cada clic?

(No quiero que cada cita se muestre solo una vez, solo quiero evitar que el control deslizante muestre la misma en una fila)

HTML:

 <div class="container" onclick="changequote()"> <div class="quote">Sentence 1</div> <div class="quote">Sentence 2</div> <div class="quote">Sentence 3</div> </div> <script>window.onload = changequote()</script>

JS:

 function changequote() { var random = Math.floor(Math.random() * $('.quote').length); $('.quote').hide().eq(random).fadeTo(500, 1); }

CSS:

 .quote { display: none; }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede alternar una clase para realizar un seguimiento de la cotización current . Luego elija al azar entre las comillas que son :not(.current) .

También moví el javascript a la sección de javascript, lo que realmente ayuda para el mantenimiento. No hay nada como verter el archivo .js al depurar solo para descubrir que el problema se origina en el html.

 function changequote() { let $quotes = $('.quote:not(.current)'); $('.quote').removeClass('current').hide(); //reset all quotes $quotes //pick from all quotes except the previously selected one .eq(Math.floor(Math.random() * $quotes.length)) .addClass('current') .fadeIn(); } $('.container').on('click', changequote).click(); //click will initialize on page load
 .quote{ cursor: pointer; display: none;}
 <div class="container"> <div class="quote">Sentence 1</div> <div class="quote">Sentence 2</div> <div class="quote">Sentence 3</div> <div class="quote">Sentence 4</div> <div class="quote">Sentence 5</div> <div class="quote">Sentence 6</div> <div class="quote">Sentence 7</div> <div class="quote">Sentence 8</div> <div class="quote">Sentence 9</div> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

about 4 years ago · Juan Pablo Isaza Relatório

0

Simplemente guarde el índice en una variable global, usando cierres

 const changeQuote = (() => { let lastSelectedIndex; return function() { let random = Math.floor(Math.random() * $('.quote').length); while(true) { random = Math.floor(Math.random() * $('.quote').length); if(random !== lastSelectedIndex) break; } $('.quote').eq(lastSelectedIndex).hide(); $('.quote').eq(random).fadeIn(500); lastSelectedIndex = random; } })();

EDITAR: Aquí hay un ejemplo en ejecución

 const changeQuote = (() => { let lastSelectedIndex; return function() { let random = Math.floor(Math.random() * $('.quote').length); while(true) { random = Math.floor(Math.random() * $('.quote').length); if(random !== lastSelectedIndex) break; } $('.quote').eq(lastSelectedIndex).hide(); $('.quote').eq(random).fadeIn(500); lastSelectedIndex = random; } })();
 .quote { display: none; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="quote">Sentence 1</div> <div class="quote">Sentence 2</div> <div class="quote">Sentence 3</div> <button onclick="changeQuote()">Show Random Quote</button>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda