16
respostas

Erro data is not defined

import { handleNovoItem } from "./componentes/criaTarefa.js";
import { carregaTarefa } from "./componentes/carregaTarefa.js";

const novaTarefa = document.querySelector("[data-form-button]");

novaTarefa.addEventListener("click", handleNovoItem);

carregaTarefa();
import { carregaTarefa } from "./carregaTarefa.js";
import BotaoConclui from "./concluiTarefa.js";
import BotaoDeleta from "./deletaTarefa.js";

export const handleNovoItem = (event) => {
  event.preventDefault();
  const tarefas = JSON.parse(localStorage.getItem("tarefas")) || [];
  const input = document.querySelector("[data-form-input]");
  const valor = input.value;

  const calendario = document.querySelector("[data-form-date]");
  const data = moment(calendario.value);

  const dataFormatada = data.format("DD/MM/YYYY");

  const dados = {
    valor,
    dataFormatada,
  };

  const tarefasAtualizadas = [...tarefas, dados];

  localStorage.setItem("tarefas", JSON.stringify(tarefasAtualizadas));

  input.value = "";

  carregaTarefa();
};

export const Tarefa = ({ valor, dataFormatada }) => {
  const tarefa = document.createElement("li");
  tarefa.classList.add("task");

  const conteudo = `<p class="content">${dataFormatada} * ${valor}</p>`;
  tarefa.innerHTML = conteudo;

  tarefa.appendChild(BotaoConclui());
  tarefa.appendChild(BotaoDeleta());

  return tarefa;
};
import { criaData } from "./criaData.js";

export const carregaTarefa = () => {
  const lista = document.querySelector("[data-list]");

  const tarefasCadastradas = JSON.parse(localStorage.getItem("tarefas")) || [];

  lista.innerHTML = "";

  tarefasCadastradas.forEach((tarefa) => {
    const dia = moment(tarefa.dataFormatada, "DD/MM/YYYY");
    const diff = data.diff(dia);

    if (diff === 0) {
      lista.appendChild(criaData(dia));
    }
  });
};
import { Tarefa } from "./criaTarefa.js";

export const criaData = (data) => {
  const tarefas = JSON.parse(localStorage.getItem("tarefas")) || [];
  const dataTopo = document.createElement("li");
  const conteudo = `<p class="content-data">${data.format("DD/MM/YYYY")}</p>`;

  dataTopo.innerHTML = conteudo;

  tarefas.forEach((tarefa) => {
    const dia = moment(tarefa.dataFormatada, "DD/MM/YYYY");

    const diff = data.diff(dia);

    if (diff === 0) {
      dataTopo.appendChild(Tarefa(tarefa));
    }
  });

  return dataTopo;
};

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

16 respostas

Fala Diego, tudo bem?

Para arrumar isso você pode simplesmente tirar a verificação do diff de dentro da função carregaTarefa pois ja estamos fazendo essa verificação no criaTarefa que é aonde possuimos acesso a data, assim ficando o seu carregaTarefa:

import { criaData } from "./criaData.js";

export const carregaTarefa = () => {
  const lista = document.querySelector("[data-list]");

  const tarefasCadastradas = JSON.parse(localStorage.getItem("tarefas")) || [];

  lista.innerHTML = "";

  tarefasCadastradas.forEach((tarefa) => {

      lista.appendChild(criaData(dia));
  });
};

Tenta ai e fala pra gente se funcionou ta bom?

Matheus boa tarde, tive o mesmo problema e achei o post aqui.Eu tentei aplicar a solução aqui apresentada e não funcionou desta vez lista.appendChild(criaData(dia));o parametro "dia " não é definido.Eu sou estudante ainda mas uma coisa que me chamou atenção durante a aula, quando o instrutor foi implentar em um determiado trecho do código,ao inserir o parametro dentro de outro módulo não ocorreu a chamada do import { criaData } from "./criaData.js";automaticamente e no video o instrutor coloca manualmente.Enfim só uma observação não sei dizer se tem alguma relação, comentei pois durante a codificação dos outros modulos o import ocorria automaticamente com a chamada do parametro.

aqui não ta rodando esse código também... fiz identico ao video, olhei varias vezes.

Olá, recomendo que os dois abram tópicos diferentes para que eu e o pessoal possa ajudar vocês, ta bom?

Mateus, desculpa a pergunta que pode parecer meio boba, mais eu não entendi o motivo para abri dois tópicos diferentes quando o problema é o mesmo a duvida é a mesma de 3 pessoas.Eu estou parado no curso e não vou dar sequencia até entender e resolver o problema do código, com todo respeito e toda franqueza não vou abri outro topico para pergunta a mesma coisa que mais duas pessoas perguntaram.Espero que entenda meu ponto de vista.Estarei no aguardo da explicação do erro do codigo e da explicação da solução a ser apresentada.

o problema é exatamente o mesmo, não roda porque mostra data not defined.

Pessoal para não perderem tempo, ja existe varios posts aqui no forum relatando mesmo problema.Conclusão foi encontrado um erro de edição do video, e codigo colocado em lugar errado.O material não foi atualizado nem arrumado, fiz alguns testes antes de ler os demais posts e uma solução para eliminar a falha de data não definida, seria criar const data = dia dentro de tarefasCadastradas no modulo carrega tarefa.js.Vai conseguir criar as tarefas do mesmo dia na mesma data,porém ao criar mais de uma tarefa no mesmo dia ele duplica a data e as tarefas.Mas para fins de entendimento a falha ocorria por falta de declaração de "data"

marcelo consegui arrumar. depois de tentar bastante.

o arquivo cria data fica assim

import { Tarefa } from "./criaTarefa.js"

export const criaData = (data) => { const tarefas = JSON.parse(localStorage.getItem('tarefas')) || []

const dataTopo = document.createElement('li') const conteudo = <p class="content-data">${data.format('DD/MM/YYYY')}</p>

dataTopo.innerHTML = conteudo

tarefas.forEach((tarefa => { const dia = moment(tarefa.dataFormatada, 'DD/MM/YYYY') const diff = data.diff(dia) if(diff === 0) { dataTopo.appendChild(Tarefa(tarefa)) } }))

return dataTopo

e o carrega tarefa fica assim

import { criaData } from "./criaData.js"

export const carregaTarefa = () => { const lista = document.querySelector('[data-list]')

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

lista.innerHTML = ""

tarefasCadastradas.forEach((tarefa => { const dia = moment(tarefa.dataFormatada, 'DD/MM/YYYY')

    lista.appendChild(criaData(dia))

})) }

ele vai separar junto com as datas mas vai repetir varias vezes, será arrumado na aula posterior

o que eu mudei foi um parenteses no tarefa (nao sei se isso muda algo ou não, não testei com porque ja tava pistola de tanto tentar)

e tirei o diff do carrega tarefa, como a função criaData recebe um dia como variável é necessário criar a variável dia pra jogar dentro da função. Na solução que o colega acima apresentou a funcção cria data estava recebendo um dia mas ele não existia. tenta lá e ve se foi abraço

ficou torto demais, não sei postar bonitinho igual o cara ali em cima mas acho que deu pra pegar

criaData.js

import { Tarefa } from "./criaTarefa.js"

export const criaData = (data) => { const tarefas = JSON.parse(localStorage.getItem('tarefas')) || []

const dataTopo = document.createElement('li') const conteudo = <p class="content-data">${data.format('DD/MM/YYYY')}</p>

dataTopo.innerHTML = conteudo

tarefas.forEach((tarefa => { const dia = moment(tarefa.dataFormatada, 'DD/MM/YYYY') const diff = data.diff(dia) if(diff === 0) { dataTopo.appendChild(Tarefa(tarefa)) } }))

return dataTopo

carregaTarefa.js

import { criaData } from "./criaData.js"

export const carregaTarefa = () => { const lista = document.querySelector('[data-list]')

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

lista.innerHTML = ""

tarefasCadastradas.forEach((tarefa => { const dia = moment(tarefa.dataFormatada, 'DD/MM/YYYY')

    lista.appendChild(criaData(dia))
})) }

aprendi hahaha

Muito bom Rafael, fiz aqui e funcionou show! Obrigado

Rafael show de bola, não tive tempo de resonder ontem seus posts e obrigado por compartilhar.

Apanhei pra caramba com esse erro!

Valeu!!

Rafael, muito obrigado pela solução estava apanhando muito aqui vendo e revendo o video. Estava achando muito estranho mesmo o código pq no vs code quando eu colocava o:

const diff = data.diff(dia);

ele não modificava o highlight e constava como se a constante não tivesse sido definida.

E na aula 3 deste capitulo, se todos repararem o código do arquivo carregaTarefa.js está igual a solução do Rafael. Mais uma vez obrigado pela ajuda Rafael

Rafael de Freitas Rosa, salvou meu dia!