0
I need to bring the object values from my Json API to the fields within a div of products that I want to create, it was all working out until I needed to put the values that are inside the objects inside the div. What happens is that it does not find the path inside the object when the function starts. I think the problem is the arrays inside the object. I think the way should be Object.NomeDoArray.Namedadddentrodoarray But it always returns error on first reading path line that appears.
Follows the code:
window.onload = async()=>{
console.log('AQUI DEVE APARECER UM OBJETO JSON')
const criaDiv = document.createElement('div')
criaDiv.classList.add('produto')
const areaDiv = document.querySelector('secaoProdutos')
try{
const produto = await fetch('https://frontend-intern-challenge-api.iurykrieger.now.sh/products?page=1')
const resultado = await produto.json()
console.log(resultado)
}
catch{
conole.log("Não foi possivel excutar essa ação!")
}
const imagem = resultado.products.image //O ERRO ACONTECE AQUI <----------
const nome = resultado.products.name
const descricao = resultado.products.description
const oldPrice = resultado.products.oldPrice
const count= resultado.products.installments.count
const value = resultado.products.installments.value
console.log(imagem)
console.log(nome)
console.log(descricao)
console.log(oldPrice)
console.log(count)
console.log(value)
areaDiv.innerHTML =
`
<img src="${resultado.products.image}">
<br>
<h3 >${resultado.products.name}</h3>
<br>
<p>${resultado.products.description}</p>
<br>
<p>De: ${resultado.products.oldPrice}</p>
<br>
<h2>Por: ${resultado.products.price}</h2>
<br>
<p>ou ${resultado.products.installments.count}x ${resultado.products.installments.value}</p>
`
}
<!DOCTYPE html>
<html lang="PT-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ProjetoPhToco</title>
<!--Reset.CSS-->
<link rel="stylesheet" href="style.css/reset.css">
<!------------->
<!--Cabeçalho-->
<link rel="stylesheet" href="style.css/cabecalho.css">
<!------------->
<!--Corpo do Site-->
<link rel="stylesheet" href="style.css/corpo.css">
<!-------------->
</head>
<header>
<div class="cabecalhoCorpo">
<div class="textosCabecalho">
<h1 class="h1Cabecalho">uma seleção de produtos</h1>
<h2 class="h2Cabecalho">especial para você</h2>
<h3 class="h3Cabecalho">Todos os produtos desta lista foram selecionados a partir da sua navegação.
Aproveite!</h3>
</div>
<nav class="navMenu">
<input class="botaoMenu" type="button" value="Coneça a Lix">
<input class="botaoMenu" type="button" value="Ajude o algoritimo">
<input class="botaoMenu" type="button" value="Seus Produtos">
<input class="botaoMenu" type="button" value="Compartilhe">
</nav>
</div>
</header>
<body>
</body>
<h2 class="h2Corpo">Sua seleção especial</h2>
<div class="secaoProdutos">
<div class="produto">
<img class="imgProduto" src="img/cocacola.jpg" alt="imagem de uma cocacola" >
<br>
<h3 class="nomeProduto">Nome do produto</h3>
<br>
<p class="descricaoProduto">Descrição do produto um pouco maior, com duas linhas ou três que explica melhor do que se trata.</p>
<br>
<p class="deProduto">De: R$23,99</p>
<br>
<h2 class="porProduto">Por: R$19,99</h2>
<br>
<p class="ouProduto">ou 2x de R$9,99</p>
</div>
<div class="produto">
<img class="imgProduto" src="img/cocacola.jpg" alt="imagem de uma cocacola" >
<br>
<h3 class="nomeProduto">Nome do produto</h3>
<br>
<p class="descricaoProduto">Descrição do produto um pouco maior, com duas linhas ou três que explica melhor do que se trata.</p>
<br>
<p class="deProduto">De: R$23,99</p>
<br>
<h2 class="porProduto">Por: R$19,99</h2>
<br>
<p class="ouProduto">ou 2x de R$9,99</p>
</div>
<div class="produto">
<img class="imgProduto" src="img/cocacola.jpg" alt="imagem de uma cocacola" >
<br>
<h3 class="nomeProduto">Nome do produto</h3>
<br>
<p class="descricaoProduto">Descrição do produto um pouco maior, com duas linhas ou três que explica melhor do que se trata.</p>
<br>
<p class="deProduto">De: R$23,99</p>
<br>
<h2 class="porProduto">Por: R$19,99</h2>
<br>
<p class="ouProduto">ou 2x de R$9,99</p>
</div>
<div class="produto">
<img class="imgProduto" src="img/cocacola.jpg" alt="imagem de uma cocacola" >
<br>
<h3 class="nomeProduto">Nome do produto</h3>
<br>
<p class="descricaoProduto">Descrição do produto um pouco maior, com duas linhas ou três que explica melhor do que se trata.</p>
<br>
<p class="deProduto">De: R$23,99</p>
<br>
<h2 class="porProduto">Por: R$19,99</h2>
<br>
<p class="ouProduto">ou 2x de R$9,99</p>
</div>
</div>
<footer>
</footer>
<script src="javaScript/sync.js"></script>
</html>
Thank you, it worked very well, really, I did not remember creating Let or forEch. Without wanting to abuse your help, but I was left with one more question. Almost all the information was pulled and inserted on the page, only the images that were not brought were broken. Can the Lord tell me the reason? Then click the path inside the object, it redirects smoothly to the image in navigating.
– user172788
@Brunomartins data in this array is missing
http(s)
image url... comes only with//
. I addedhttp
in the code, switch tohttps
if applicable.– Sergio