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

Quando usar ()

Porque eu preciso usar () após a variavel BotaoConclui na linha tarefa.appendChild(botaoConclui()), mas não devo colocar após o criarTarefa da linha novaTarefa.addEventListener("click", criarTarefa) ?

const criarTarefa = (evento) => {
    evento.preventDefault();

    const lista = document.querySelector("[data-list]");
    const input = document.querySelector("[data-form-input]");
    const valor = input.value;

    const tarefa = document.createElement("li");
    tarefa.classList.add("task");
    const conteudo = `<p class = "content">${valor}</p>`;

    tarefa.innerHTML = conteudo;

    tarefa.appendChild(BotaoConclui());
    lista.appendChild(tarefa);
    input.value = " ";
}

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

novaTarefa.addEventListener("click", criarTarefa);

const BotaoConclui = () => {
    const botaoConclui = document.createElement("button");

    botaoConclui.classList.add("check-button");
    botaoConclui.innerText = "concluir";
    botaoConclui.addEventListener("click", () =>{
        console.log("Fui clicado");
    })

    return botaoConclui;
}
1 resposta
solução!

Oi Raphael, tudo bem?

Quando você chama a função BotaoConclui() você está invocando-a para receber o seu retorno. Ou seja, vai retornar o botaoConclui (como na última linha dessa função), para então esse elemento ser adicionado aqui: tarefa.appendChild(BotaoConclui()); .

Mas, quando chamamos dessa maneira: novaTarefa.addEventListener("click", criarTarefa); nós não queremos o retorno da função criarTarefa, veja que essa função não retorna nada, então se chamássemos com o uso de parênteses: criarTarefa(), iria retornar undefined e não é o que queremos. O que queremos é executar essa função, estamos atribuindo essa função no evento de clique, passando-a como parâmetro para ser executada.

Espero ter ajudado, qualquer outra dúvida estou a disposição, abraços e bons estudos!