1
resposta

[Dúvida] so aparace um de cada vez

let amigos = [];

function adicionar(){ let amigo = document.getElementById('nome-amigo'); let lista = document.getElementById('lista-amigos'); amigos.push(amigo.value); if (lista.textContent == '') { lista.textContent = amigo.value; } else { lista.textContent = ${lista.textContent} , ${amigo.value}; } amigo.value = ''; }

function sortear(){ embaralha(amigos); let sorteinho = document.getElementById('lista-sorteio');

for(let i = 0; i < amigos.length; i++) {
    if (i == amigos.length - 1){
    sorteinho.innerHTML = amigos[i] + ' --> ' + amigos[0] + '<br/>';
    } else {
    sorteinho.innerHTML = amigos[i] + ' --> ' + amigos[i + 1] + '<br/>';
    }
}

}

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]];
}

}

1 resposta

Correções e Melhorias: Uso incorreto da template string em lista.textContent: No seu código, a linha que tenta adicionar novos amigos à lista está usando uma sintaxe incorreta para template strings. O correto é usar crase (`) em vez de aspas duplas (""). Vou corrigir isso.

Uso de innerHTML em vez de textContent: A alteração de conteúdo da lista de sorteio pode ser feita com innerHTML, mas como você está concatenando várias informações, é melhor usar textContent para evitar injeções de HTML indesejadas.

Melhorando o comportamento da lista de amigos: No momento em que a lista de amigos é exibida, você está apenas verificando se lista.textContent está vazio. Uma abordagem mais robusta seria adicionar uma vírgula entre os nomes dos amigos.