Para resolução, acabei optando por uma modificação na indicação do instrutor e gostaria de verificar se faz sentido.
Indicação do instrutor:
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;
}
Identifiquei que no caso de sortear 5 números de 1 à 5, o sistema permitia, o que eu achei redundante, tendo em vista que o resultado seria (1,2,3,4,5) e nem precisaria de sorteio, então alterei para o operador "> =" para comparar a quantidade, o que parece ter resolvido a questão:
if (quantidadeDeNumeros >= (numeroFinal - numeroInicial + 1)) {
alert ('Você precisa informar nos campos "Quantidade de números" e "Do número", valores menores que no campo "Até o número".');
return;
}
Também verifiquei que estava permitindo sortear mesmo sem informar nenhum valor, então acrescentei o seguinte código:
if (!quantidadeDeNumeros || !numeroInicial || !numeroFinal) {
alert('Você precisa informar valores em todos os campos.');
return;
}
Gostaria de um feedback, obrigado!
Segue o código completo:
function sortear() {
let quantidadeDeNumeros = parseInt(document.getElementById('quantidade').value);
let numeroInicial = parseInt(document.getElementById('de').value);
let numeroFinal = parseInt(document.getElementById('ate').value);
let numerosSorteados = [];
if (!quantidadeDeNumeros || !numeroInicial || !numeroFinal) {
alert('Você precisa informar valores em todos os campos.');
return;
}
if (quantidadeDeNumeros >= (numeroFinal - numeroInicial + 1)) {
alert ('Você precisa informar nos campos "Quantidade de números" e "Do número", valores menores que no campo "Até o número".');
return;
}
for (let i = 0; i < quantidadeDeNumeros; i++) {
let sorteio = getRandomIntInclusive(numeroInicial, numeroFinal);
while (numerosSorteados.includes(sorteio)) {
sorteio = getRandomIntInclusive(numeroInicial, numeroFinal);
}
numerosSorteados.push(sorteio);
}
let textoNumerosSorteados = document.getElementById('resultado');
if (numerosSorteados.length > 1) {
textoNumerosSorteados.innerHTML = `<label class="texto__paragrafo">Números sorteados: ${numerosSorteados}.</label>`;
} else {
textoNumerosSorteados.innerHTML = `<label class="texto__paragrafo">Número sorteado: ${numerosSorteados}.</label>`;
}
trocarStatusBotao();
}
function trocarStatusBotao() {
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 getRandomIntInclusive(min, max) {
return Math.floor(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>';
trocarStatusBotao();
}