Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

437
Visualizações
Cómo obtener datos JSON después de hacer clic en el botón

 const Sheet = [ { "Code": "A-0-1", "UPC": "Photos/4009803054728.jpg", "Title": "USS Constitution", "Price": "$34", "InStock": "7" }, { "Code": "A-0-2", "UPC": "Photos/4009803073996.jpg", "Title": "Revell 07399 VW Samba Bus Model Kit", "Price": "$38", "InStock": "8" }, ] const productsEl = document.querySelector(".Sheet"); function getProducts() { Sheet.forEach((product) => { productsEl.innerHTML += `<div class="productContainer"> <div class="img"> <img src=${product.UPC} alt="Image Unavailable" height="170px;" width="170px"> </div> <div class="itemdesc"> <h2 class="itemName" id="itemName">${product.Title}</h2> <h4 class="price"><span id="price">${product.Price}</span></h4> <div class="desc"> <p id="desc">${product.Code}</p> </div> <div class="stock"> <p> ${product.InStock} Units</p> </div> <div class="addToCart" onclick="addToCart();"> <button id="addToCart" > Add to Cart</button> </div> </div>`; }) } getProducts(); function addToCart() { console.log(document.getElementById("itemName").innerText) }
 <div class="Sheet"> </div>

De acuerdo, el botón Agregar al carrito solo registra los primeros datos en mi objeto. No importa cuál presione, siempre es el primero. Probé .val y no tuve suerte. ¿Cómo puedo registrar el elemento que se presionó en su lugar?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Puede pasar el nombre del producto como argumento a la función addToCart() como se muestra a continuación

 const Sheet = [ { "Code": "A-0-1", "UPC": "Photos/4009803054728.jpg", "Title": "USS Constitution", "Price": "$34", "InStock": "7" }, { "Code": "A-0-2", "UPC": "Photos/4009803073996.jpg", "Title": "Revell 07399 VW Samba Bus Model Kit", "Price": "$38", "InStock": "8" }, ] const productsEl = document.querySelector(".Sheet"); function getProducts() { Sheet.forEach((product) => { productsEl.innerHTML += `<div class="productContainer"> <div class="img"> <img src=${product.UPC} alt="Image Unavailable" height="170px;" width="170px"> </div> <div class="itemdesc"> <h2 class="itemName" id="itemName">${product.Title}</h2> <h4 class="price"><span id="price">${product.Price}</span></h4> <div class="desc"> <p id="desc">${product.Code}</p> </div> <div class="stock"> <p> ${product.InStock} Units</p> </div> <div class="addToCart" onclick="addToCart(product.Title);"> <button id="addToCart" > Add to Cart</button> </div> </div>`; }) } getProducts(); function addToCart(productTitle) { console.log(productTitle) }
about 4 years ago · Juan Pablo Isaza Relatório

0

Tienes que pasar el index del producto como parámetro a la función AddToCart() .

Ventajas de esta implementación

  1. Le permite acceder a otras propiedades del objeto del producto como Price , InStock , etc.
  2. Si cambia el nombre de la propiedad de "Título" a otra cosa, solo necesita actualizar el código de la función AddToCart , no la llamada a la acción AddToCart de AddToCart getProducts() .

Consejo: debe intentar evitar obtener elementos a través de html id o innerText (esto era una norma hace una década o más, ya no). Intenta usar más atributos de datos

 const Sheet = [ { "Code": "A-0-1", "UPC": "Photos/4009803054728.jpg", "Title": "USS Constitution", "Price": "$34", "InStock": "7" }, { "Code": "A-0-2", "UPC": "Photos/4009803073996.jpg", "Title": "Revell 07399 VW Samba Bus Model Kit", "Price": "$38", "InStock": "8" }, ] const productsEl = document.querySelector(".Sheet"); function getProducts() { Sheet.forEach((product, productIndex) => { productsEl.innerHTML += `<div class="productContainer"> <div class="img"> <img src=${product.UPC} alt="Image Unavailable" height="170px;" width="170px"> </div> <div class="itemdesc"> <h2 class="itemName" id="itemName">${product.Title}</h2> <h4 class="price"><span id="price">${product.Price}</span></h4> <div class="desc"> <p id="desc">${product.Code}</p> </div> <div class="stock"> <p> ${product.InStock} Units</p> </div> <div class="addToCart" onclick="addToCart(`+productIndex+`);"> <button id="addToCart" > Add to Cart</button> </div> </div>`; }) } getProducts(); function addToCart(productIndex) { var product = Sheet[productIndex]; console.log(product.Title); }
 <div class="Sheet"> </div>

Explicación

Los parámetros de una función forEach permiten el índice de la iteración actual. leer más aquí

about 4 years ago · Juan Pablo Isaza Relatório

0

Prueba así

 const Sheet = [ { "Code": "A-0-1", "UPC": "Photos/4009803054728.jpg", "Title": "USS Constitution", "Price": "$34", "InStock": "7" }, { "Code": "A-0-2", "UPC": "Photos/4009803073996.jpg", "Title": "Revell 07399 VW Samba Bus Model Kit", "Price": "$38", "InStock": "8" }, ] const productsEl = document.querySelector(".Sheet"); function getProducts() { Sheet.forEach((product) => { productsEl.innerHTML += `<div class="productContainer"> <div class="img"> <img src=${product.UPC} alt="Image Unavailable" height="170px;" width="170px"> </div> <div class="itemdesc" > <h2 class="itemName" id="itemName">${product.Title}</h2> <h4 class="price"><span id="price">${product.Price}</span></h4> <div class="desc"> <p id="desc">${product.Code}</p> </div> <div class="stock"> <p> ${product.InStock} Units</p> </div> <div class="addToCart" onclick=""> <button class="addToCartBtn" id="${product.Code}"> Add to Cart</button> </div> </div>`; }) } getProducts(); var elements = document.querySelectorAll(".addToCartBtn"); elements.forEach(element => { element.addEventListener("click", function (e) { console.log(e.target.id); //other function }); });
 <div class="Sheet"> </div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda