Olá pessoal, vim mostrar o meu projeto final: A partir de uma informação que peguei em uma discussão aqui no fórum, adicionei uma função para que o botão "Sortear" só seja clicado uma vez por sorteio. Também incluí uma função para que o campo do formulário volte a ficar em branco após digitar um nome, ou caso dê erro no preenchimento.
let amigos = [];
function adicionar() {
let amigo = document.getElementById('nome-amigo');
// Converter o nome digitado para maiúsculo
let nomeEmMaiusculo = amigo.value.trim().toUpperCase();
if (nomeEmMaiusculo === '') {
alert('Adicione pelo menos 4 amigos!');
return;
}
// Verificar se o nome completo já existe na lista
if (amigos.includes(nomeEmMaiusculo)) {
alert('Nome já adicionado!');
amigo.value = '';
return;
}
let lista = document.getElementById('lista-amigos');
amigos.push(nomeEmMaiusculo);
if (lista.textContent === '') {
lista.textContent = nomeEmMaiusculo;
} else {
lista.textContent = lista.textContent + ', ' + nomeEmMaiusculo;
}
amigo.value = '';
}
function sortear() {
if (amigos.length < 4) {
alert('Adicione pelo menos 4 amigos!');
return;
}
embaralha(amigos);
let sorteio = document.getElementById('lista-sorteio');
for (let i = 0; i < amigos.length; i++) {
if (i === amigos.length - 1) {
sorteio.innerHTML = sorteio.innerHTML + amigos[i] + ' -->' + amigos[0] + '<br>';
} else {
sorteio.innerHTML = sorteio.innerHTML + amigos[i] + ' -->' + amigos[i + 1] + '<br>';
}
}
// Desativa o botão sortear após o sorteio
document.getElementById('botao-sortear').disabled = true;
}
function embaralha(lista) {
for (let indice = lista.length; indice; indice--) {
const indiceAleatorio = Math.floor(Math.random() * indice);
[lista[indice - 1], lista[indiceAleatorio]] = [lista[indiceAleatorio], lista[indice - 1]];
}
}
function reiniciar() {
amigos = [];
document.getElementById('lista-amigos').innerHTML = '';
document.getElementById('lista-sorteio').innerHTML = '';
// Reativa o botão sortear ao reiniciar
document.getElementById('botao-sortear').disabled = false;
}