2
respostas

[Projeto] Proteção de entrada

Além de adicionar o Alert(), também esvaziei o input do numero de partida (doNumero), e usei o return pra que o número não seja sorteado.

function sortear (){
    let quantidade = parseInt(document.getElementById ("quantidade") .value);
    let doNumero = parseInt(document.getElementById ("de") . value);
    let ateONumero = parseInt(document.getElementById ("ate") . value);
    
    let sorteados = [];
    let numero;
    
    if (doNumero >= ateONumero) { 
       let mensagemDeCorrecao = alert ('O número minímo precisa ser menor que o número limite');
        document.getElementById ("de") .value = '';
        document.getElementById ('resultado').innerHTML = '<label class="texto__paragrafo">Números sorteados:  nenhum até agora</label>';
        return;
    }
    
    for (let i = 0; i < quantidade; i++) {
            numero = obterNumeroAleatorio (doNumero, ateONumero);
            
            while (sorteados.includes(numero)){
                numero = obterNumeroAleatorio (doNumero, ateONumero);
            }
            sorteados.push (numero);
    }
    
    

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

   if (quantidade == 1) {
    mensagemResultado.innerHTML = `<label class="texto__paragrafo">Número sorteado: ${sorteados}</label>`;
   }

    alterarStatusBotao ();
}

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

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 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();
}
2 respostas

Agora com a proteção no total de números sorteados:

function sortear (){
    let quantidade = parseInt(document.getElementById ("quantidade") .value);
    let doNumero = parseInt(document.getElementById ("de") . value);
    let ateONumero = parseInt(document.getElementById ("ate") . value);
    
    let sorteados = [];
    let numero;
    

    // proteção na entrada de valores

    if (doNumero >= ateONumero) { 
       let mensagemDeCorrecao = alert ('O número minímo precisa ser menor que o número limite');
        document.getElementById ("de") .value = '';
        document.getElementById ('resultado').innerHTML = '<label class="texto__paragrafo">Números sorteados:  nenhum até agora</label>';
        return;
    }
    
    

    for (let i = 0; i < quantidade; i++) {
            numero = obterNumeroAleatorio (doNumero, ateONumero);
            
            while (sorteados.includes(numero)){
                numero = obterNumeroAleatorio (doNumero, ateONumero);
            }
            sorteados.push (numero);
        
            // proteção no total de números sorteados
        
        if (quantidade <= doNumero, ateONumero ) {
            alert('A quantidade de números sorteados não pode ser maior que o intervalo dos número inseridos.')
            document.getElementById ("quantidade") .value = '';
            return;
        }
    
    }
    
    

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

   if (quantidade == 1) {
    mensagemResultado.innerHTML = `<label class="texto__paragrafo">Número sorteado: ${sorteados}</label>`;
   }

    alterarStatusBotao ();
}

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

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 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();
}

Olá, Alexandre. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Ótimo como você implementou a proteção de entrada usando alert() e limpando o campo do número inicial. Isso evita erros na lógica do sorteio.

Uma dica interessante: você pode melhorar a validação da entrada e evitar números inválidos antes de começar o sorteio, usando isNaN() para verificar se os valores inseridos são realmente números. Veja este exemplo:


function validarEntrada(valor) {
    if (isNaN(valor) || valor === '') {
        alert('Por favor, insira um número válido.');
        return false;
    }
    return true;
}

Isso impede que o usuário tente sortear sem inserir números corretamente.

Conte com o apoio do Fórum. Abraços e bons estudos.