1
resposta

Minha Resposta

Melhorias aplicadas

  • Separação dos elementos do DOM em variáveis, evitando repetição de getElementById.
  • Substituição implícita por conversão explícita usando Number() para garantir que os valores sejam numéricos.
  • Correção da validação que poderia considerar 0 como campo inválido.
  • Inclusão de verificação para impedir que a quantidade seja maior que o total disponível no intervalo.
  • Uso de const para seguir boas práticas e aumentar a segurança do código.

Versão Melhorada


function sortear() {
  let quantidade = Number(document.getElementById("quantidade").value);
  let de = Number(document.getElementById("de").value);
  let ate = Number(document.getElementById("ate").value);

  //  Validação de campos vazios
  if (
    document.getElementById("quantidade").value === "" ||
    document.getElementById("de").value === "" ||
    document.getElementById("ate").value === ""
  ) {
    alert("Preencha todos os campos.");
    return;
  }

  //  Validação do intervalo
  if (de >= ate) {
    alert('Campo "Do número" deve ser menor que "Até o número".');
    return;
  }

  // Validação da quantidade possível
  let totalDisponivel = ate - de + 1;

  if (quantidade > totalDisponivel) {
    alert(
      `Não é possível sortear ${quantidade} números entre ${de} e ${ate}.
Máximo permitido: ${totalDisponivel}.`,
    );
    return;
  }

  let sorteados = [];

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

Olá, Claudeny! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de boas práticas na manipulação do DOM para evitar redundâncias no JavaScript, utilizou muito bem a conversão explícita com Number() para garantir consistência nos cálculos e ainda compreendeu a importância de validar corretamente os campos e intervalos para evitar erros de execução.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!