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

[Bug] Problema com Live Server?

Ao clicar em Open with Live Server a página abre normalmente. Mas ao clicar no botão sortear a página trava, não exibe resultado e aparece um alerta se quero aguardar a pagina responder ou fechar. Isso é algum problema no código ou na extesão do Live Server?

function sortear(){
    let quantidade = parseInt(document.getElementById('quantidade').value);
    let de = parseInt(document.getElementById('de').value);
    let ate = parseInt(document.getElementById('ate').value);

    let sorteados = [];
    let numero;

    for (let i = 0; i < quantidade; i++) {
        numero = obterNumeroAleatorio(de, ate);
       
        while (sorteados.includes(numero)); {
            numero = obterNumeroAleatorio(de, ate);
        } 

        sorteados.push(numero);
    }

    let resultado = document.getElementById('resultado');
    resultado.innerHTML = `<label class="texto__paragrafo">Números sorteados:  ${sorteados}.</label>`;

}

function obterNumeroAleatorio(min, max) {
    return Math.floor(Math.random() * (max - min +1)) + min;
    
}

3 respostas
solução!

Oi Pedro,

O problema está no seu loop while (sorteados.includes(numero));.

O ponto e vírgula no final da linha cria um loop infinito, pois ele executa um bloco vazio repetidamente enquanto a condição for verdadeira. 😱

Para corrigir, remova o ponto e vírgula. O código correto deve ser:

while (sorteados.includes(numero)) {
    numero = obterNumeroAleatorio(de, ate);
}

Essa correção garante que o loop continue gerando novos números aleatórios até encontrar um que ainda não esteja na lista sorteados. 💡

Para saber mais: Documentação da MDN sobre o loop while.

Continue praticando e explorando a lógica de programação! 💪

tux matrix Caso este post o tenha ajudado, marque-o como solucionado ☑️. Bons Estudos! 🤓

Boa!!

Meu Deus, eu olhei esse código umas 30 vezes e não vi isso. Funcionou muito obrigado!