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

[Projeto] Resolução

fiquei algumas horas quebrando a cabeça e pesquisando, fui também atrás de aprender sobre o querySelector e o getElementById mas consegui chegar nessa conclusão

app.js

function alterarStatus(numero) {
    let clicked = document.getElementById(`game-${numero}`);
    let imagem = clicked.querySelector('.dashboard__item__img');
    let botao = clicked.querySelector('.dashboard__item__button');
    let nome = clicked.querySelector('.dashboard__item__name')

    if (imagem.classList.contains('dashboard__item__img--rented')) {
        removerStatus(imagem, botao, 'Alugar', 'dashboard__item__img--rented', 'dashboard__item__button--return');
    } else {
        adicionarStatus(imagem, botao, 'Devolver', 'dashboard__item__img--rented', 'dashboard__item__button--return');
    }
}

function adicionarStatus(imagem, botao, textoBotao, classeImagem, classeBotao) {
    imagem.classList.add(classeImagem);
    botao.classList.add(classeBotao);
    botao.textContent = textoBotao;
}

function removerStatus(imagem, botao, textoBotao, classeImagem, classeBotao) {
    imagem.classList.remove(classeImagem);
    botao.classList.remove(classeBotao);
    botao.textContent = textoBotao;
}

html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AluGames</title>
    <link rel="stylesheet" href="css/main.css">
</head>

<body class="body">
    <main class="container main">
        <img src="img/logo.svg" alt="Logo AluGames">
        <section class="divisor">
            <div class="divisor__line"></div>
            <img src="img/fade_bar.svg" alt="Visual bar" class="divisor__bar">
            <div class="divisor__line"></div>
        </section>
        <h1 class="page-title">Aluguel de <span class="page-title__emphasis">boardgames</span></h1>
        <section class="dashboard">
            <ul class="dashboard__items">
                <li class="dashboard__items__item" id="game-1">
                    <div class="dashboard__item__img">
                        <img src="img/monopoly.png" alt="Capa jogo Monopoly">
                    </div>
                    <p class="dashboard__item__name">Monopoly</p>
                    <a onclick="alterarStatus(1)" href="#" class="dashboard__item__button">Alugar</a>
                </li>
                <li class="dashboard__items__item" id="game-2">
                    <div class="dashboard__item__img">
                        <img src="img/ticket_to_ride.png" alt="Capa jogo Ticket to Ride">
                    </div>
                    <p class="dashboard__item__name">Ticket to Ride</p>
                    <a onclick="alterarStatus(2)" href="#" class="dashboard__item__button">Alugar</a>
                </li>
                <li class="dashboard__items__item" id="game-3">
                    <div class="dashboard__item__img dashboard__item__img--rented">
                        <img src="img/takenoko.png" alt="Capa jogo Takenoko">
                    </div>
                    <p class="dashboard__item__name">Takenoko</p>
                    <a onclick="alterarStatus(3)" href="#" class="dashboard__item__button dashboard__item__button--return">Devolver</a>
                </li>
            </ul>
        </section>
        <img src="img/hachuras.svg" alt="Visual hachuras" class="hachuras">
    </main>

    <script src="js/app.js"></script>
</body>

</html>
1 resposta
solução!

Oi Gustavo, tudo bem?

Parabéns pela solução no projeto AluGames! Seu código JavaScript está bem estruturado, e você utilizou eficientemente os métodos querySelector e getElementById para manipulação do DOM. A função alterarStatus parece funcionar de maneira eficaz, alternando entre os estados de "Alugar" e "Devolver".

A abordagem de criar funções específicas (adicionarStatus e removerStatus) para modificar as classes e textos dos elementos traz clareza ao seu código e facilita a manutenção. Além disso, a utilização de classes CSS específicas (dashboard__item__img--rented e dashboard__item__button--return) para controlar o estado visual é uma prática organizada.

Continue praticando e construindo projetos!

Um abraço e bons estudos.