Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Projeto final - Amigo Secreto

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;
}
2 respostas
solução!

Oi, Iago! Como vai?

Obrigada por compartilhar seu código.

Gostei de como você implementou a verificação para evitar que o botão "Sortear" seja clicado mais de uma vez. Também ficou interessante a função para limpar o campo do formulário após o preenchimento ou erro. Esse cuidado com a interação do usuário melhora bastante a experiência.

Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!

Obrigado pela atenção Lorena. Vamos em frente!!!