1
resposta

[Projeto] Desafio hora da prática + Alugames

Projeto completo + Exercício 1 e 2

let jogosAlugados = 0;

function quantidadeJogosAlugados (){
    console.log (`Total de jogos alugados: ${jogosAlugados}`)
}

function alterarStatus(id){
    let jogoSelecionado = document.getElementById(`game-${id}`);
    let imagemJogo = jogoSelecionado.querySelector('.dashboard__item__img');
    let botao = jogoSelecionado.querySelector('.dashboard__item__button');
    let nomeJogo = jogoSelecionado.querySelector('.dashboard__item__name');
    
    if (botao.classList.contains(`dashboard__item__button--return`)) {
        if(confirm(`Deseja devolver ${nomeJogo.textContent}?`)) {
            botao.classList.remove('dashboard__item__button--return');
            imagemJogo.classList.remove('dashboard__item__img--rented');
            botao.innerHTML = 'Alugar';
            jogosAlugados--;
        }
    } else {
        botao.classList.add('dashboard__item__button--return');
        imagemJogo.classList.add('dashboard__item__img--rented');
        botao.innerHTML = 'Devolver';
        jogosAlugados++;
    }

    quantidadeJogosAlugados();
}

document.addEventListener('DOMContentLoaded', function() {
    jogosAlugados = document.querySelectorAll('.dashboard__item__img--rented').length;
    contarEExibirJogosAlugados();
});

Sobre o Exercício 2, eu não entendi muito bem sobre o DOMContentLoaded e documet.AddEventListener, mesmo depois de pesquisar e perguntar ao ChatGPT

Exercício 3:

function verificarPalindromo (palavra) {
    
    let palavraTeste = palavra.split('').reverse().join('');
   
    if (palavra == palavraTeste) {
        console.log (`A palavra ${palavra} é um palíndromo!`);
    } 
    else {
        console.log (`A palavra ${palavra} não é um palíndromo!`);
    }
}

verificarPalindromo();

Exercício 4

function numerosOrdenados(a, b, c) {
    let ordem = [a, b, c].sort((x, y) => x - y);
    console.log(`A ordem dos números é: ${ordem.join(', ')}`)
}
1 resposta

Bom dia Bia! Tudo bem com você?

Meus parabéns pela conclusão dos exercícios e por compartilhá-los com a comunidade do fórum Alura. Gostaria de aproveitar a oportunidade e deixar uma explicação sobre o evento DOMContentLoaded e o método document.addEventListener.

O que é DOMContentLoaded?

O evento DOMContentLoaded é acionado quando o documento HTML inicial foi completamente carregado e analisado pelo navegador. Isso significa que o HTML foi lido e interpretado, e a árvore DOM (Document Object Model) foi criada. Porém, os recursos externos, como imagens e estilos CSS, ainda podem estar sendo carregados. Isso é útil quando queremos garantir que o DOM esteja completamente construído antes de executar qualquer código JavaScript que interaja com ele.

O que faz document.addEventListener('DOMContentLoaded', function() {...})?

A função document.addEventListener é usada para adicionar um "ouvinte" de eventos a um elemento do DOM. No caso ao adicionarmos o DOMContentLoaded, estamos dizendo ao navegador para executar uma função assim que o evento DOMContentLoaded ocorrer, ou seja, quando a estrutura básica do HTML estiver pronta para ser manipulada pelo JavaScript.

No seu código temos o seguinte:

document.addEventListener('DOMContentLoaded', function() {
    jogosAlugados = document.querySelectorAll('.dashboard__item__img--rented').length;
    quantidadeJogosAlugados();
});

Nessa parte do código temos a garantia de que o JavaScript só começará a contar e exibir o número de jogos alugados depois que o HTML estiver totalmente carregado. Isso é importante porque, se tentarmos acessar elementos do DOM antes de eles serem criados, o JavaScript pode não funcionar corretamente.

Uma comparação com o nosso dia a dia

Podemos imaginar o funcionamento do evento da seguinte forma, pense que você está em uma biblioteca e precisa contar o número de livros em uma prateleira específica. No entanto, se você chegar antes que a prateleira seja montada, não poderá contar os livros. DOMContentLoaded é como esperar até que a prateleira esteja pronta e cheia de livros para, então, começar a contá-los.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

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