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
Bem simples, use como achar melhor.
#html
<a onClick="nextItem()" id="links" target="_blank">
CLICK ME
</a>
#Javascript
var arr = ['http://google.com', 'http://facebook.com', 'http://instagram.com'];
var i = 0;
function nextItem() {
i = i + 1;
i = i % arr.length;
return links.href = arr[i];
}
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];
});
});
}
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>