Falta pouco!

0 dias

0 horas

0 min

0 seg

1
resposta

[Dúvida] Dúvida sobre a mudança da imagem

Nesse projeto, eu estava fazendo com que o código querySelector pegasse uma classe, com um ponto antes. O código estava assim (o texto no botão ainda não foi mudado):

function alterarStatus(numeroJogo) {
    let jogo = document.getElementById('game-' + numeroJogo);
    let imagem = jogo.querySelector('.dashboard__item__img'); //por pontinho pq é classe
    let status = jogo.querySelector('.dashboard__item__button');

    if (!imagem.classList.contains('dashboard__item__img--rented')) {
        imagem.classList.add('dashboard__item__img--rented');
        status.classList.add('dashboard__item__button--return');

    } else {
        imagem.classList.remove('dashboard__item__img--rented');
        status.classList.remove('dashboard__item__button--return');
    }
}

Quando eu uso as tags no lugar das classes (linha 3 e 4) , a imagem não funciona:

let imagem = jogo.querySelector('img'); 
    let status = jogo.querySelector('a');

Alguém sabe qual o problema?

1 resposta

Olá, Riquelme! Tudo bem?

Quando você usa a classe, como .dashboard__item__img, o querySelector está procurando por um elemento que tenha essa classe específica. Quando você troca para usar a tag, como img, ele está procurando por qualquer elemento img dentro do elemento jogo.

O problema pode estar ocorrendo porque, ao usar a tag diretamente, o querySelector pode estar encontrando múltiplos elementos img ou a dentro do elemento jogo, e talvez não seja o que você espera. Se houver mais de um elemento img ou a, o querySelector retornará apenas o primeiro encontrado.

Para resolver isso, você pode tentar garantir que está selecionando o elemento correto. Se você tem certeza de que há apenas um elemento img ou a dentro de cada jogo, então o problema pode estar em outro lugar. No entanto, se houver mais de um, você pode precisar ser mais específico com o seletor ou usar querySelectorAll para pegar todos os elementos e, em seguida, iterar sobre eles ou selecionar o correto.

Por exemplo, se cada jogo tem apenas um img e um a, o código deve funcionar como esperado. Caso contrário, você pode precisar ajustar a estrutura do HTML ou usar um seletor mais específico.

Espero ter ajudado e bons estudos!

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