Abrir link em sequencia e voltar para o primeiro depois

JavaScript

Peguei um script que faz a abertura de links de forma randomica... mas eu precisava saber como crio um script para abrir um link por ves e depois retornar ao inicial. Ex. Clica no botao e ele abre link1. Clica outra vez e ele abre link2... mais uma vez e abre link3.... depois abre o link4.... e depois volta a abrir link1 novamente.
Estou usando este script para fazer ele abrir o link de forma randomica.... mas preciso que seja ele sequencial e depois da abertura do ultimo link ele volte a abrir o link1 novamente.
----------------------

<script>
<!--
/*
Botão com Links Randômicos 
*/

// Especifique os links para trabalharem de forma aleatória abaixo. Você pode inserir quantos achar necessário
var randomlinks=new Array()

randomlinks[0]="https://website1.com"
randomlinks[1]="https://website2.com"
randomlinks[2]="https://website3.com"
randomlinks[3]="https://website4.com"

function randomlink(){
window.location=randomlinks[Math.floor(Math.random()*randomlinks.length)]
}
//-FIM DO SCRIPT-
</script>
--------------

Obrigado!

Alex

Foto de Alex C.
Alex perguntou há 4 anos

Sabe a resposta?

Ganhe 10 pts por resposta de qualidade
Responder dúvida
2 respostas
0
votos
Nenhum usuário votou nessa resposta como útil.
Professor Everton C.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 4 anos

Olá Alex!
Vamos ver se consigo ajudar... Penso que para você continuar abrindo os links aleatóriamente e seguindo em sequência, seria importante você de alguma maneira armazenar os índices dos links que já foram abertos. Depois disso, fazer uma verificação pelo índice antes de abrir o link novamente. Se o link já foi aberto, deve ser descartado e gerado um novo índice randômico. Vou deixar um código abaixo apenas para ilustrar a minha lógica, faça a conversão e adaptação necessária se quiser usar este código.
Espero que a formatação aqui na tela fique boa o suficiente para entender o código.

var index;
var arrCheck;
var randomlinks=[];
 
this.randomlinks[0]="https://website1.com";
this.randomlinks[1]="https://website2.com";
this.randomlinks[2]="https://website3.com";
this.randomlinks[3]="https://website4.com";
 
randomlink(){
    this.index = Math.floor(Math.random()*this.randomlinks.length);
    this.handomCall(this.index);
}
 
handomCall(index){
    this.arrCheck.push(index).then(()=>{
    this.arrCheck.forEach(element => {
        if(element != index){
            window.location = this.randomlinks[index];
        } else {
            this.randomlink();
        }
        if(element === this.randomlinks.length-1){ 
            console.log("Útimo Elemento!");
            this.arrCheck = [];
        }
        return window.location = this.randomlinks[index];
        });
    });
}

<button onclick="randomlink()">Abrir Link</button>


Espero ter contribuído.
Desejo sucesso!

Envie uma dúvida gratuitamente

Envie sua primeira dúvida gratuitamente aqui no Tira-dúvidas Profes. Nossos professores particulares estão aqui para te ajudar.

0
votos
Nenhum usuário votou nessa resposta como útil.
Professor José R.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 4 anos

Use multidimencional array, estando o endereço (URL) no conteúdo relativo ao primeiro indice, e um sinalizador(flag) no conteúdo relativo ao segundo indice, utilizado para marcar o que já foi usado. Quando chega no fim do array, cria um reset para todos de modo a iniciar a sequência novamente

Veja o script abaixo funcionando: https://bomshopping.com/profes/js1/

<!DOCTYPE html>
<html>
<body>

<h2>Sequência -  segue na ordem Natural</h2>
<h3>Link1: https://globo.com</h3>
<h3>Link2: https://uol.com.br</h3>
<h3>Link3: https://estadao.com.br</h3>
<h3>Link4: https://msn.com.br</h3>

<script>

var links=new Array()

nlinks = [

["https://globo.com",0],

["https://uol.com.br",0],

["https://estadao.com.br",0],

["https://msn.com.br",0],

]

function callnext(){   //Cada vez que você clicar esta função é chamada e utilizará o registro no multdimencional array para saber quem é o próximo
    
   //alert("Função callnext chamada!"+" Tamanho do array="+nlinks.length);

   nlen = nlinks.length ;
   
   

   for(i=0;i<nlen;i++){
       if(nlinks[i][1]==0){ // o segundo elemento da linha do array com indice[1] mostra se aquele link já foi (valor 1) ou não usado (valor 0)

            alert("abre o link"+nlinks[i][0]);  //utiliza o primeiro liberado
            
            //window.open(nlinks[i][0],_blank);

            nlinks[i][1]=1; //irá sinalisar que já foi usado

            if(i==(nlen-1)){  //verifica se chegou no último item ou linha do array
                
                 alert("Entrou no Resset!");

                 for(j=0;j<nlen;j++){  //depois da abertura do ultimo link ele volte a abrir o link1 novamente.

                      nlinks[j][1]=0;  //resseta os indicadores pra iniciar novamente, volta ao link1

                  }

            }
            break;
       }

 

   }

 }
</script>
<button onclick="callnext()">Próximo da sequência</button>


</body>
</html>

 

Professores particulares de JavaScript

+ Ver todos
Encontre professor particular para te ajudar nos estudos
R$ 60 / h
Everton C.
Caxias do Sul / RS
Everton C.
5,0 (2 avaliações)
Horas de aulas particulares ministradas 2 horas de aula
Identidade verificada
  • CPF verificado
  • E-mail verificado
1ª hora grátis
Angular.js JavaScript - PWA JavaScript - Ionic
Especialização: Mobile Development (Budapest University of Technology)
Aplicativos Android e iOS, aprenda de modo rápido e fácil, usando Ionic e Angular. Ganhe tempo, e ainda transforme o seu App em uma aplicação PWA.
R$ 70 / h
Vinícius B.
Santo André / SP
Vinícius B.
5,0 (13 avaliações)
Horas de aulas particulares ministradas 19 horas de aula
Tarefas resolvidas 5 tarefas resolvidas
Identidade verificada
  • CPF verificado
  • E-mail verificado
1ª hora grátis
JavaScript - Estrutura de Repetição Condicional JavaScript Básico JavaScript - Back-End
MBA: Business Intelligence (Faculdade Descomplica)
Te ensino a programar. Professor de programação, com 5 anos de atuação em .net, sql, entity framework, scrum etc.
R$ 50 / h
Gustavo A.
Campina Grande / PB
Gustavo A.
5,0 (2 avaliações)
Horas de aulas particulares ministradas 7 horas de aula
Identidade verificada
  • CPF verificado
  • E-mail verificado
1ª hora grátis
Javascript Geral JavaScript - Estrutura Condicional e operadores lógicos. Expressões lógicas. JavaScript - Estrutura Condicional ou de Seleção
Graduação: Engenharia da Computação (IFPB - Campus Campina Grande )
Desenvolvedor web python e javascript. Acompanhamento particular em python, html,css e javascript