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

Mão na massa: proteção na entrada de valores

function sortear() {
    let listaNumeros = [];
    let numero;

    let quantidade = document.getElementById('quantidade').value;
    let de = document.getElementById('de').value;
    let ate = document.getElementById('ate').value;

    if ((de <= ate) && (ate - de + 1 >= quantidade)){


        while (listaNumeros.length < quantidade) {
            numero = obterNumeroAleatorio(de, ate);
            if (!listaNumeros.includes(numero)) {
                listaNumeros.push(numero);
            } 
        }

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

    } 
    else {
        alert('Dados incompatíveis.');
    }
}

function alterarStatusBotao() {
    let botao = document.getElementById('btn-reiniciar');

    if botao.classList.contains('container__botao-desabilitado') {
        botao.classList.remove('container__botao-desabilitado');
        botao.classList.add('container__botao');

    } 
    else {
        botao.classList.remove('container__botao');
        botao.classList.add('container__botao-desabilitado');
    }
}

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

function reiniciar(){
    document.getElementById('quantidade').value =";
    document.getElementById('de').value =";
    document.getElementById('ate').value =";
    document.getElementById('resultado').innerHTML = '<label class="texto__paragrafo">Números sorteados:  nenhum até agora</label>';
    alterarStatusBotao();
}
1 resposta
solução!

Oi, Henrique! Como vai?

Agradeço por compartilhar.

Ficou bem interessante a forma como você criou a verificação pra garantir que os valores inseridos sejam compatíveis antes de realizar o sorteio. A condição (de <= ate) && (ate - de + 1 >= quantidade) mostra uma boa preocupação em evitar situações inválidas, além do uso de includes() para impedir números repetidos na lista.

Você pode testar o método Number() pra garantir que os valores capturados do HTML sejam realmente números, evitando comparações inesperadas entre textos. Veja este exemplo:


let quantidade = Number(document.getElementById('quantidade').value);
let de = Number(document.getElementById('de').value);
let ate = Number(document.getElementById('ate').value);

console.log(quantidade, de, ate);

Number() converte o valor digitado nos campos para numero, garantindo que comparações matemáticas funcionem corretamente.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!