1
resposta

Refatoração e manipulação de elementos

Realizamos o proposto em aula!

const html = document.querySelector('html'); //seleciona o html
const focoBt = document.querySelector('.app__card-button--foco');//seleciona o botão foco
const curtoBt = document.querySelector('.app__card-button--curto');//seleciona o botrão curto
const longoBt = document.querySelector('.app__card-button--longo');//seleciona o botão descanso longo
const banner = document.querySelector('.app__image'); //seleciona as imagnes que tenho que trocar ao clicar nos botões
const titulo = document.querySelector('.app__title');

const temporizador = document.getElementsByClassName ('.app__card-primary-button-wrapper');
const imagens = document.getElementsByClassName('app__image');
const frases = document.getElementsByClassName('app__title');

console.log(temporizador, imagens, frases);

const botaoTemporizador = document.getElementById('start-pause');//puxei o id em vez da classe
const botaoFoco = document.getElementsByClassName('app__card-button--foco');
const botaoCurto = document.getElementsByClassName('app__card-button--curto');
const botaoLongo = document.getElementsByClassName('app__card-button--longo');

temporizadorFoco = 1500;
temporizadorCurto = 300;
temporizadorLongo = 900;

focoBt.addEventListener('click', () =>{
    /*html.setAttribute('data-contexto', 'foco');
    banner.setAttribute('src', '/imagens/foco.png'); // muda o atributo da imagem ao clicar*/
    alterarContexto('foco');
})//mudando atributo das páginas ao clicar no botão

curtoBt.addEventListener('click', () =>{
   alterarContexto('descanso-curto');

})

longoBt.addEventListener('click', () =>{
    alterarContexto('descanso-longo');
})

function alterarContexto(contexto) {
    html.setAttribute('data-contexto', contexto)
    banner.setAttribute('src', `/imagens/${contexto}.png`)
    switch (contexto) {
        case "foco":
            titulo.innerHTML = `
            Otimize sua produtividade,<br>  
            <strong class="app__title-strong">mergulhe no que importa.</strong>
            `
            
            break;
        case "descanso-curto":
            titulo.innerHTML = `
            Que tal dar uma respirada?<br> 
            <strong class="app__title-strong"> Faça uma pausa Curta</strong>
            ` 
            break;

        case "descanso-longo":
            titulo.innerHTML = `
            Hora de voltar à superfície.
             <strong class="app__title-strong"> Faça uma pausa longa</strong>
            `
        default:
            break;
    }
}

function botao(botaoAcao, contexto) {
    botaoAcao.addEventListener('click', () =>{
        alterarContexto(contexto);
    })
}

botao(focoBt, 'foco');
botao(curtoBtBt, 'descanso-curto');
botao(longoBt, 'descanso-longo');
1 resposta

Olá, Alexandre, como vai?

Seu código está muito bem estruturado e organizado, parabéns pelo trabalho! Você utilizou boas práticas ao criar a função alterarContexto para evitar repetição de código. Isso melhora bastante a legibilidade e manutenção do projeto.

No entanto, notei algumas inconsistências que podem ser ajustadas para evitar problemas:

Declaração das variáveis globais

As variáveis temporizadorFoco, temporizadorCurto e temporizadorLongo não possuem let ou const na declaração. Isso pode causar conflitos no escopo global.

Exemplo de ajuste:


const temporizadorFoco = 1500;
const temporizadorCurto = 300;
const temporizadorLongo = 900;

Erros de referência nos nomes das variáveis

No final do código, o parâmetro curtoBtBt está incorreto, pois você declarou curtoBt. Exemplo de correção:

botao(curtoBt, 'descanso-curto');

Switch sem break em um caso

No case "descanso-longo", o bloco não possui break. Isso pode gerar comportamento inesperado.

Exemplo de ajuste:

case "descanso-longo":
    titulo.innerHTML = `
    Hora de voltar à superfície.<br>
    <strong class="app__title-strong">Faça uma pausa longa</strong>
    `;
    break;

Esses ajustes vão deixar seu código mais robusto e garantir que ele funcione corretamente em todos os contextos. Continue compartilhando suas implementações, estamos aqui para apoiar!

Espero ter ajudado!

Siga firme nos seus estudos e conte com o fórum sempre que precisar!

Abraços :)