Segue o código do meu projeto. Eu fui fazendo a implementação de cada parte no meu GitHub, utilizando os comandos no terminal. Consegui ir sincronizando a evolução da cada parte da implementação por meio dos commit comentados.
function sortear () {
let quantidade = parseInt(document.getElementById('quantidade').value);
let de = parseInt(document.getElementById('de').value);
let ate = parseInt(document.getElementById('ate').value);
// teste de proteção de entrada de dados.
if(ate < de || ate == de){
alert('Informe valores corretos');
reiniciar();
}
// teste de proteção de entrada de dados.
let sorteados = [];
let numero;
// proteção para looping infinito na quantidade do array possível dos números selecionados
if (quantidade > (ate - de + 1)) {
alert('Campo "Quantidade" deve ser menor ou igual ao intervalo informado no campo "Do número" até o campo "Até o número". Verifique!');
return;
}
// proteção para looping infinito na quantidade do array possível dos números selecionados
for (let i = 0; i<quantidade; i++){
numero = obterNumeroAleatorio(de, ate);
sorteados.push(numero);
while(sorteados.includes(numero))
{
numero = obterNumeroAleatorio(de, ate);
}
}
let resultado = document.getElementById('resultado');
resultado.innerHTML = `<label class="texto__paragrafo">Números sorteados:${sorteados}</label>`
alterarStatusBotao();
}
function obterNumeroAleatorio (min, max) {
//min = Math.ceil(min); Não precisa.
//max = Math.floor(max); Não precisa.
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();
}