Gente vamos ao meu problema, eu estou tentando criar uma pagina de favoritos, portanto tanto a função criarItemLoja. Quanto a função criarItemPgFavoritos estão criando um elemento li e introduzindo na ulFavoritos (home) e ulFavoritosPgFavoritos (pagina de favoritos) respectivamente.
Essas paginas estão em arquivos html separados e nelas existem as ul's que capturei com querySelector.
Vamos as duvidas: Porque eu fiz duas funções que criam elementos? Eu tinha criado apenas uma, depois fiz um eventListener com evento de click no icone, salvei no localStorage os itens clicados e recuperei os itens em um arrVazio.
No console, tudo certo o arr esta la, esta atribuindo os objetos, certinho, porem, quando eu dava o forEach no novo objeto para renderizar a pagina os objetos que estavam no localStorage nao apareciam
Quebrei a cabeça e conclui que o problema devia estar na função e realmente o problema estava la, as funções são essas abaixo. A primeira cria a lista de elementos na pagina home e a segunda na pagina favoritas.
Ambas funcionam, o problema é: elas não funcionam simultaneamente, quando eu comento A renderiza B e vice e versa. Então por isso os itens não estão renderizando na minha pagina. Alguem consegue me explicar o motivo e me ajudar nessa?
function criarItemLoja(itens) {
const li = document.createElement('li');
const divLojaItem = document.createElement('div');
divLojaItem.classList.add('favoritos-item');
const imgLojaIcon = document.createElement('img');
imgLojaIcon.id = 'loja__favoritos-icon';
imgLojaIcon.src = itens.icon;
imgLojaIcon.alt = 'Icone de favoritos';
const imgLivro = document.createElement('img');
imgLivro.src = itens.livro;
imgLivro.alt = 'Imagem do livro';
const buttonFavoritos = document.createElement('button');
buttonFavoritos.className = 'favoritos-button';
let imgButtonSacola = document.createElement('img');
imgButtonSacola.id = 'favoritos-button-sacola';
imgButtonSacola.src = './img/Compras.svg';
imgButtonSacola.alt = 'Ícone de sacola';
const precoTexto = document.createTextNode(itens.preco);
// Mostrar a estrutura do item, pega a div e coloca a imagem do icone e do livro
divLojaItem.appendChild(imgLojaIcon);
divLojaItem.appendChild(imgLivro);
//add a div a linha
li.appendChild(divLojaItem);
//faz o mesmo que o acima
buttonFavoritos.appendChild(imgButtonSacola);
buttonFavoritos.appendChild(precoTexto)
li.appendChild(buttonFavoritos);
//retorna o item pronto
return li
};
//faz o loop de forma dinamica e coloca na tela
itens.forEach(itens => {
const itemFavoritos = criarItemLoja(itens);
ulFavoritos.appendChild(itemFavoritos);
});
function criarItemPgFavoritos(itens) {
const li = document.createElement('li');
const divLojaItem = document.createElement('div');
divLojaItem.classList.add('favoritos-item');
const imgLojaIcon = document.createElement('img');
imgLojaIcon.id = 'loja__favoritos-icon';
imgLojaIcon.src = itens.icon;
imgLojaIcon.alt = 'Icone de favoritos';
const imgLivro = document.createElement('img');
imgLivro.src = itens.livro;
imgLivro.alt = 'Imagem do livro';
const buttonFavoritos = document.createElement('button');
buttonFavoritos.className = 'favoritos-button';
let imgButtonSacola = document.createElement('img');
imgButtonSacola.id = 'favoritos-button-sacola';
imgButtonSacola.src = './img/Compras.svg';
imgButtonSacola.alt = 'Ícone de sacola';
const precoTexto = document.createTextNode(itens.preco);
// Mostrar a estrutura do item, pega a div e coloca a imagem do icone e do livro
divLojaItem.appendChild(imgLojaIcon);
divLojaItem.appendChild(imgLivro);
//add a div a linha
li.appendChild(divLojaItem);
//faz o mesmo que o acima
buttonFavoritos.appendChild(imgButtonSacola);
buttonFavoritos.appendChild(precoTexto)
li.appendChild(buttonFavoritos);
//retorna o item pronto
return li
};
itens.forEach (itens => {
const itensFavoritos = criarItemPgFavoritos(itens);
ulFavoritosPgFavoritos.appendChild(itensFavoritos);
})