Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Nao consigo achar o que fiz de errado

Estou fazendo o projeto em paralelo com as listas de exercicios, até realizar os exercicios desse segmento, o codigo parecia funcionar bem, mas agora meu timer não aparece e não consigo mudar de foco e descanso. Até tentei comparar com o do professor, mas não consigo identificar o erro

const btnAddTarefa = document.querySelector('.app__button--add-task')
const formAddTarefa = document.querySelector('.app__form-add-task')
const textArea = document.querySelector('.app__form-textarea')
const ulTarefas = document.querySelector('.app__section-task-list')
const cancelar = document.querySelector('.app__form-footer__button--cancel')
const paragrafoDescricaoTarefa = document.querySelector('.app__section-active-task-description')

const tarefas = JSON.parse(localStorage.getItem('tarefas')) || []

let tarefaSelecionada = null
let liTarefaSelecionada = null

function attTarefas() {
    localStorage.setItem('tarefas', JSON.stringify(tarefas))
}

function criarElementoTarefa(tarefa) {
    const li = document.createElement('li')
    li.classList.add("app__section-task-list-item")

    const svg = document.createElement('svg')
    svg.innerHTML = `
    <svg class="app__section-task-icon-status" width="24" height="24" viewBox="0 0 24 24" fill="none"
            xmlns="http://www.w3.org/2000/svg">
            <circle cx="12" cy="12" r="12" fill="#FFF"></circle>
            <path d="M9 16.1719L19.5938 5.57812L21 6.98438L9 18.9844L3.42188 13.4062L4.82812 12L9 16.1719Z"
                fill="#01080E"></path>
        </svg>
        `

    const paragrafo = document.createElement('p')
    paragrafo.textContent = tarefa.descrição
    paragrafo.classList.add("app__section-task-list-item-description")

    const btnNovaTarefa = document.createElement('button')
    btnNovaTarefa.classList.add("app_button-edit")

    btnNovaTarefa.onclick = () => {
        const novaDescricao = prompt('Qual o nome da nova tarefa? ')
        if (novaDescricao) {
            paragrafo.textContent = novaDescricao
            tarefa.descrição = novaDescricao
            attTarefas()
        }


    }

    const imgBotao = document.createElement('img')
    imgBotao.setAttribute('src', './imagens/edit.png')
    btnNovaTarefa.append(imgBotao)

    li.append(svg)
    li.append(paragrafo)
    li.append(btnNovaTarefa)

    li.onclick = () => {
        document.querySelectorAll('.app__section-task-list-item-active')
            .forEach(elemento => {
                elemento.classList.remove('app__section-task-list-item-active')
            })
        if (tarefaSelecionada == tarefa) {
            paragrafoDescricaoTarefa.textContent = ''
            tarefaSelecionada = null
            liTarefaSelecionada = null
            return
        }
        tarefaSelecionada = tarefa
        liTarefaSelecionada = li
        paragrafoDescricaoTarefa.textContent = tarefa.descrição
        li.classList.add('app__section-task-list-item-active')
    }

    return li
}

btnAddTarefa.addEventListener('click', () => {
    formAddTarefa.classList.toggle('hidden')
})


formAddTarefa.addEventListener('submit', (evento) => {
    evento.preventDefault();
    const tarefa = {
        descrição: textArea.value
    }
    tarefas.push(tarefa)
    const elementoTarefa = criarElementoTarefa(tarefa)
    ulTarefas.append(elementoTarefa)
    attTarefas()
    textArea.value = ''
    formAddTarefa.classList.add('hidden')

})

tarefas.forEach(tarefa => {
    const elementoTarefa = criarElementoTarefa(tarefa)
    ulTarefas.append(elementoTarefa)
});

cancelar.onclick = () => {
    textArea.value = ''
    formAddTarefa.classList.toggle('hidden')
}

document.addEventListener('FocoFinalizado', () => {
    if (tarefaSelecionada && liTarefaSelecionada) {
        liTarefaSelecionada.classList.remove('app__section-task-list-item-active')
        liTarefaSelecionada.classList.add('app__section-task-list-item-complete')
        liTarefaSelecionada.querySelector('button').setAttribute('disabled', 'disabled')

    }
})

segue tambem o codigo alterado do 'primeiro' js

const contagemRegressiva = () => {
    if (tempoDecorridoEmSeg <= 0) {
        somOver.play()
        alert('Tempo finalizado!')
        const focoAtivo = html.getAttribute('data-contexto') == 'foco'
        if (focoAtivo) {
            const evento = new CustomEvent('FocoFinalizado')
            document.dispatchEvent(evento)

        }
        zerar()
        return
    }
    tempoDecorridoEmSeg -= 1
    mostrarTempo()
}
4 respostas

Oi Ana!

Seu código difere da aula,faltam algumas funções e declarações como a mostraTempo(), e o nome usado no seu HTML parece diferente, o que causa sérios erros ao tentar trabalhar com o HTML da aula.

Por favor, compartilhe seu código HTML ou utilize o da aula, mas terá que alinhar o seu código com o do instrutor tambem no JS. No momento que estou testando o seu código, na aula usa uma certo padrão, por exemplo,document.querySelector('.app__card-button--foco'), enquanto seu código refere-se a outras classes, como a "app__button--add-task", que não consigo encontrar no arquivo HTML da aula, dentre outras, causando diversos erros.

Reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!

Sucesso

Um grande abraço e até mais!

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

Segue o HTML do projeto em 2 ptes pq ultrapassa o limite de caracteres

<!DOCTYPE html>
<html lang="pt-br" data-contexto="foco">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Fokus</title>
    <link rel="shortcut icon" href="./imagens/favicon.ico" type="image/x-icon">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css"
        integrity="sha512-NmLkDIU1C/C88wi324HBc+S2kLhi08PN5GDeUVVVC/BVt/9Izdsc9SVeVfA1UZbY3sHUlDSyRXhCzHfr6hmPPw=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link
        href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Prata&family=Unbounded:wght@200;300;400;500;600;700;800;900&display=swap"
        rel="stylesheet">
    <link rel="stylesheet" href="./styles.css">
    <script src="main.js"></script>
    <script src="./script-crud.js" defer></script>
</head>

<body>
    <main class="app">
        <header class="app__header">
            <figure class="app__logo-figure">
                <img class="app__logo-image" src='./imagens/logo.png' alt="">
            </figure>
        </header>
        <section class="app__section-banner-container">
            <h1 class="app__title">
                Otimize sua produtividade,<br>
                <strong class="app__title-strong">mergulhe no que importa.</strong>
            </h1>
            <figure class="app__image-figure">
                <img class="app__image" src='./imagens/foco.png' alt="">
            </figure>
        </section>
        <section class="app__section-card-container">
            <div class="app__card">
                <ul class="app__card-list">
                    <li class="app__card-list-item">
                        <button data-contexto="foco"
                            class="app__card-button app__card-button--foco active">Foco</button>
                    </li>
                    <li class="app__card-list-item">
                        <button data-contexto="short" class="app__card-button app__card-button--curto">Descanso
                            curto</button>
                    </li>
                    <li class="app__card-list-item">
                        <button data-contexto="long" class="app__card-button app__card-button--longo">Descanso
                            longo</button>
                    </li>
                </ul>
                <div id="timer" class="app__card-timer"></div>
                <ul class="app__card-list">
                    <li class="app__card-list-item">
                        <label class="toggle">
                            <input class="toggle-checkbox" type="checkbox" id="alternar-musica">
                            <div class="toggle-switch"></div>
                        </label>
                    </li>
                    <li class="app__card-list-item">
                        <label class="app__card-list-label" for="alternar-musica">
                            Música
                        </label>
                    </li>
                </ul>
                <div class="app__card-primary-button-wrapper">
                    <button id="start-pause" class="app__card-primary-button">
                        <img class="app__card-primary-butto-icon" src="./imagens/play_arrow.png" alt="">
                        <span>Começar</span>
                    </button>
                </div>
            </div>
        </section>

        <footer class="app__footer">
            <p class="app__footer-text">
                Projeto fictício e sem fins comerciais. Imagens geradas por IA no Adobe Firefly.Desenvolvido por Alura.
            </p>

 
       <section class="app__section-task-container">
            <div class="app__section-task-content">
                <header class="app__section-active-task">
                    <p class="app__section-active-task-label">#Em andamento:</p>
                    <p class="app__section-active-task-description"></p>
                </header>
                <div class="app__section-task-header">
                    <h2 class="app__section-tasks-heading">Lista de tarefas:</h2>
                    <div class="dropdown-container">
                        <button class="app_button-more">
                            <img src="./imagens/more.svg" alt="">
                        </button>
                        <ul class="app__section-task-header__ul">
                            <li class="app__section-task-header__li">
                                <button class="app__section-task-header__li__button" id="btn-remover-concluidas">
                                    <img src="./imagens/check.svg" alt="">
                                    Limpar tarefas concluídas
                                </button>
                            </li>
                            <li class="app__section-task-header__li">
                                <button class="app__section-task-header__li__button" id="btn-remover-todas">
                                    <img src="./imagens/trash.svg" alt="">
                                    Limpar todas as tarefas
                                </button>
                            </li>
                        </ul>
                    </div>
                </div>
                <ul class="app__section-task-list"></ul>
                <form class="app__form-add-task hidden" aria-hidden="true">
                    <div class="app__form-field">
                        <label class="app__form-label">
                            Adicionando tarefa
                        </label>
                        <textarea required rows="4" class="app__form-textarea"
                            placeholder="No que você está trabalhando?"></textarea>
                    </div>
                    <footer class="app__form-footer">
                        <button type="button" class="app__form-footer__button app__form-footer__button--delete">
                            <img src="./imagens/delete.png" alt=""> Deletar
                        </button>
                        <div class="splitter"></div>
                        <button type="button" class="app__form-footer__button app__form-footer__button--cancel">
                            <img src="./imagens/close.png" alt=""> Cancelar
                        </button>
                        <button class="app__form-footer__button app__form-footer__button--confirm">
                            <img src="./imagens/save.png" alt=""> Salvar
                        </button>
                    </footer>
                </form>
                <button class="app__button--add-task">
                    <img src="./imagens/add_circle.png" alt=""> Adicionar nova tarefa
                </button>
            </div>
        </section>
    </footer>
</main>
```
solução!

Acabei resolvendo sozinha o problema, nao tinha nada essencialmente de errado com meu codigo, só acabei botando os links de script no inicio do html em vez de no final