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

Não sei se está certo

function sortear(){
    let quantidade = parseInt(document.getElementById('quantidade').value);
    let de = parseInt(document.getElementById('de').value);
    let ate = parseInt(document.getElementById('ate').value);

    let sorteados = [];
    let numero;
    
    while (numero <= quantidade) {
        if (de >= ate) {
            alert('Campo "Do número" deve ser inferior ao campo "Até o número". Verifique!');
            return;
          }
        
    }

    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úmero sorteados: ${sorteados}</label>`;
    alterarStatusBotao();
}

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

//esse comando ser para não ativar o status do botão Reiniciar (ficar azul para reiniciar e cinza enquanto estiver sendo sorteado)
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();
}

Mas aí parou de funcionar vários itens no sorteador.

1 resposta
solução!

Olá! Tudo bem?

Primeiramente, percebi que você colocou a verificação dos valores de 'de' e 'ate' dentro de um loop while, mas essa verificação não precisa estar dentro de um loop. Ela pode ser feita antes de começar o sorteio. Além disso, o loop while que você criou está sem condição inicial para a variável 'numero', o que pode causar um erro.

Outro ponto é que você está usando um loop for para sortear os números, mas dentro dele você tem um loop while para verificar se o número sorteado já existe. Isso pode causar um loop infinito se a quantidade de números a serem sorteados for maior que o intervalo entre 'de' e 'ate'.

Vamos fazer algumas mudanças no seu código:

function sortear(){
    let quantidade = parseInt(document.getElementById('quantidade').value);
    let de = parseInt(document.getElementById('de').value);
    let ate = parseInt(document.getElementById('ate').value);

    // Verificação dos valores de 'de' e 'ate'
    if (de >= ate) {
        alert('Campo "Do número" deve ser inferior ao campo "Até o número". Verifique!');
        return;
    }

    let sorteados = [];
    let numero;
    
    for (let i = 0; i < quantidade; i++) {
        numero = obterNumeroAleatorio(de, ate);

        // Verifica se o número já foi sorteado
        while(sorteados.includes(numero)) {
            numero = obterNumeroAleatorio(de, ate);
        }

        sorteados.push(numero);    
    }

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

Com essas alterações, o código deve funcionar corretamente, desde que a quantidade de números a serem sorteados seja menor ou igual ao intervalo entre 'de' e 'ate'. Se a quantidade for maior, o código entrará em um loop infinito tentando sortear um número que ainda não foi sorteado.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.