1
resposta

[Bug] Desafio Projeto Sorteador de número

Estou iniciando os estudos de programação e estou na aula de Desafio Projeto Sorteador de número e parece que na parte do codigo da aula:

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

Vai gerar um bug porque basta clicar no botão que vai alterar.

Minha leitura do codigo: Se a Id "btn-reiniciar" conter a classList "container__botao-desabilitado", remova-o e adicione classList = 'container__botao', senão (classList for container__botao) remove 'container__botao' e adicione 'container__botao-desabilitado'. Então sempre vai verificar se a classList é 'container__botao' ou 'container__botao-desabilitado' alterando ao clicar. Pode acontecer de um usuario clicar duas vezes sem querer e o botão vai ser alterado. Assim terá um efeito não desejado. É isso? ou interpretei errado?

Proposta: criar duas functions e inserir ao fim das functions: *sortear() {habilitarBotaoReiniciar()}*reiniciar() {desabilitarBotaoReiniciar()}

function habilitarBotaoReiniciar() {
    let botao = document.getElementById("btn-reiniciar");
    botao.classList.remove("container__botao-desabilitado");
    botao.classList.add("container__botao");
}

function desabilitarBotaoReiniciar() {
    let botao = document.getElementById("btn-reiniciar");
    botao.classList.remove("container__botao");
    botao.classList.add("container__botao-desabilitado");
}

Assim condiciona a alteração do status do botão a execução da function e não ao clique no botão.

1 resposta

Oii, Leandro! Tudo bem?

Agradeço por interagir no fórum compartilhando sobre o bug que estava ocorrendo e como fez para solucioná-lo.

Ótima estratégia, sua interpretação está no caminho certo! Dessa forma, é possível controlar quando o botão deve ser habilitado ou desabilitado. Dando mais autonomia e evitando mudanças quando haver vários cliques para fazer a ação.

Continue se dedicando aos estudos e praticando as atividades. Qualquer dúvida que surgir, compartilhe no fórum.

Bons estudos, Leandro!