Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Challenge Amigo Secreto.

Podem me auxiliar, ver o que esta errado, porque o programa está deixando colocar nomes repetidos, sem diferença de maiúscula e minúscula e não esta parando de sortear os nomes, as vezes sai o mesmo nome varias vezes ao clicar em sortear?

function adicionarAmigo() {
    let input = document.getElementById("amigo");
    let nome = input.value.trim();
    let listaAmigos = document.getElementById("listaAmigos");

    if (nome !== "") {
        let li = document.createElement("li");
        li.textContent = nome;
        listaAmigos.appendChild(li);
        input.value = "";
        
    } else {
        alert("Por favor, digite um nome antes de adicionar."); }
    }
function atualizarLista() {
        let listaElement = document.getElementById('listaNomes');
        listaElement.innerHTML = '';     
    }
function sortearAmigo() {
    let lista = document.querySelectorAll("#listaAmigos li");
    let resultado = document.getElementById("resultado");
      resultado.innerHTML = "";
    if (lista.length>0) {
        let sorteado = lista[Math.floor(Math.random() * lista.length)].textContent;
        let li = document.createElement("li");
        li.textContent = (`O amigo secreto sorteado é: ${sorteado}`);
        resultado.appendChild(li);
            }     
else {
        alert("Adicione pelo menos um amigo antes de sortear.");
    }  
}
1 resposta
solução!

Olá, Elisângela! Tudo bem?

Seu código está funcionando bem, só precisa de alguns ajustes pra cumprir os objetivos que você deseja:

  1. Nomes Repetidos: Para evitar nomes repetidos, você pode criar uma função que verifica se o nome já existe na lista antes de adicionar. Além disso, você pode converter todos os nomes para minúsculas ao comparar, para garantir que não haja diferença entre maiúsculas e minúsculas.

  2. Parar de sortear nomes repetidos: Para garantir que o mesmo nome não seja sorteado várias vezes, você pode remover o nome sorteado da lista após o sorteio.

Por exemplo:

function adicionarAmigo() {
    let input = document.getElementById("amigo");
    let nome = input.value.trim().toLowerCase();
    let listaAmigos = document.getElementById("listaAmigos");

    if (nome !== "") {
        // Verifica se o nome já está na lista
        let nomesExistentes = Array.from(listaAmigos.children).map(li => li.textContent.toLowerCase());
        
        if (!nomesExistentes.includes(nome)) {
            let li = document.createElement("li");
            li.textContent = nome;
            listaAmigos.appendChild(li);
            input.value = "";
        } else {
            alert("Este nome já foi adicionado.");
        }
    } else {
        alert("Por favor, digite um nome antes de adicionar.");
    }
}

function sortearAmigo() {
    let lista = document.querySelectorAll("#listaAmigos li");
    let resultado = document.getElementById("resultado");
    resultado.innerHTML = "";

    if (lista.length > 0) {
        // Sorteia um nome e remove da lista
        let index = Math.floor(Math.random() * lista.length);
        let sorteado = lista[index].textContent;
        lista[index].remove();

        let li = document.createElement("li");
        li.textContent = `O amigo secreto sorteado é: ${sorteado}`;
        resultado.appendChild(li);
    } else {
        alert("Adicione pelo menos um amigo antes de sortear.");
    }
}

Com essas alterações, o programa agora verifica se o nome já existe antes de adicionar e remove o nome sorteado da lista para evitar repetições.

Espero ter ajudado. Conte com o apoio do fórum em sua jornada :)

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓