let livros = []
const livrosUl = document.getElementById('livros')
const categoria = document.querySelectorAll('[data-categoria]')
const precoID = document.getElementById('btnOrdenarPorPreco')
const dadoslivros = ("https://guilhermeonrails.github.io/casadocodigo/livros.json")
pegaDados()
async function pegaDados() {
const dados = await fetch(dadoslivros)
livros = await dados.json()
constroiCard(descontoLivros(livros))
}
categoria.forEach(element => element.addEventListener('click', filtraCategoria))
function constroiCard(livros) {
livrosUl.innerHTML = ''
livros.forEach(element => {
livrosUl.innerHTML +=
`<div class="livro">
<img class="livro__imagens" src="${element.imagem}" alt="${element.alt}" />
<h2 class="livro__titulo">${element.titulo}</h2>
<p class="livro__descricao">${element.autor}</p>
<p class="livro__preco" id="preco">${element.preco}</p>
<div class="tags">
<span class="tag">${element.categoria}</span>
</div>
</div>`
})
}
function filtraCategoria() {
let categoriaValue = document.getElementById(this.id).value
livrosFiltrados = livros.filter(livro => livro.categoria == categoriaValue)
return constroiCard(livrosFiltrados)
}
function descontoLivros(livros) {
const desconto = 0.5
const livrosComDesconto = livros.map(livro => {
return { ...livro, preco: livro.preco - (livro.preco * desconto) }
})
return livrosComDesconto
}
precoID.addEventListener('click', organizaPreco)
function organizaPreco() {
let precosOrganizados = livros.sort((a, b) => a.preco - b.preco)
constroiCard(precosOrganizados)
}
Meu site possui 3 botões para filtrar as categorias dos livros e 1 para os preços. O erro esta acontecendo na hora que vou aplicar o filtro de preco, ja que, quando clico no botao para aplicar esse filtro, ele consegue colocar os preços direito, mas aplica em todas as outras paginas. Queria corrigir o codigo para que quando apertasse o filtro de preço, aparecesse os livros filtrados apenas nessa pagina, e não nas paginas dos outros filtros