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

[Dúvida] MAIN.JS DANDO ERRO

Eu tinha criado algumas funcionalidades em outro projeto utilizando o main.js. Essa funcionalidade fazia usava uma querySelector de um data-attribute que estava escrita no documento html. Só que depois que conectei o API essa parte do html que continha o querySelector estava sendo criada através de um JS script, tipo a função constroiCard que a professora faz. O problema é que, depois que criei uma função constroiCard para listar os mesmos produtos de antes, o meu querySelector do main.js não funciona mais. É como se quando ele fizesse a busca, aquela sessão ainda não existisse. Já mudei as ordens do script no html, coloquei ele pra carregar por último e mesmo assim não funciona. Alguém pode me dar uma luz?

1 resposta
solução!

Oi Cleyton, tudo bem?

O que parece estar acontecendo é um problema de sincronização. Quando o seu script main.js é executado, o conteúdo dinâmico gerado pelo seu script que constrói os cards ainda não existe no DOM. Por isso, o querySelector não consegue encontrar o elemento que você está buscando.

Uma possível solução para isso seria chamar a função que usa o querySelector somente depois que a função que constrói os cards terminar de executar. Se sua função constroiCard for assíncrona (por exemplo, se ela estiver fazendo uma requisição para uma API), você pode usar Promises ou async/await para garantir que o código só continue a ser executado depois que a função constroiCard terminar.

Aqui está um exemplo de como você poderia fazer isso usando Promises:

constroiCard().then(() => {
  // Aqui vai o código que usa o querySelector
});

E aqui está um exemplo usando async/await:

async function main() {
  await constroiCard();
  // Aqui vai o código que usa o querySelector
}

main();

Lembre-se de que, para usar o await, a função que o contém deve ser assíncrona (ou seja, deve ser precedida pela palavra-chave async).

Espero que isso resolva o seu problema! Mas essa é apenas uma sugestão e pode não funcionar em todos os casos, já que não tenho todos os detalhes do seu código.

Um abraço e bons estudos.