|
9 | 9 | - [C018 Fusión del menu en desktop](#c018-fusión-del-menu-en-desktop) |
10 | 10 | - [C019 Fusión del menú mobile](#c019-fusión-del-menú-mobile) |
11 | 11 | - [C020 Carrito de compras](#c020-carrito-de-compras) |
| 12 | + - [C021 Lista de productos, HTML a parti de arrays](#c021-lista-de-productos-html-a-parti-de-arrays) |
12 | 13 |
|
13 | 14 | ## C009 Como conectar con JS con HTML |
14 | 15 |
|
@@ -328,5 +329,75 @@ function toogleCarritoAside(){ |
328 | 329 | aside.classList.toggle("inactive"); |
329 | 330 | } |
330 | 331 | ``` |
| 332 | +## C021 Lista de productos, HTML a parti de arrays |
| 333 | +
|
| 334 | +Como primera medida integramos el componentes de lista de productos del archivo clase6.html, como en las clases anteriores. |
| 335 | +
|
| 336 | +En este caso tenemos hardcodeado cada uno de los productos en el html. Lo que vamos a hacer es borrarlo todos (dejamos uno como comentario para ver como se forma su estructura) y generalos a traves del codigo de javascript a partir de un array con los datos de los productos a mostrar. En este caso vamos a tener tambien hardcodeado el array con algunos productos, pero mas adelante estos datos deberian ser tomados a través de consultas en el backend en bases de datos. |
| 337 | +La lista donde vamos a contener los productos, que deberia obtenerse a partir de peticiones realizadas al backend, la vamos a estar hardcodeando de la siguiente manera: |
| 338 | +```javascript |
| 339 | +const productList = []; |
| 340 | + |
| 341 | +productList.push({ |
| 342 | + name: 'Bike', |
| 343 | + price: 120, |
| 344 | + image: 'https://images.pexels.com/photos/276517/pexels-photo-276517.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940', |
| 345 | +}); |
| 346 | +productList.push({ |
| 347 | + name: 'Skate', |
| 348 | + price: 60, |
| 349 | + image: 'https://images.pexels.com/photos/165236/pexels-photo-165236.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1', |
| 350 | +}); |
| 351 | +productList.push({ |
| 352 | + name: 'Dron', |
| 353 | + price: 300, |
| 354 | + image: 'https://images.pexels.com/photos/1809576/pexels-photo-1809576.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1', |
| 355 | +}); |
| 356 | +``` |
| 357 | +Para recorrer el array tenemos dos formas mas de recorrerlo a los ya conocido con el atributo length, y es por medio del `for (item of object)` o `for (item in object)`. Con el **of** el **item** va a ser cada uno de los objetos en si, pero con **in** el **item** va a ser el indice de cada uno de los objetos. |
| 358 | +Por cada recorrido del `for`vamos a ir creando cada uno de los elementos, y una vez creado todos, lo vamos a ir anexando al padre correspondiente (mediante `append` o `appendChild`) y por ultimo anexandolo al HTML. |
| 359 | +Y a todo este `for` lo encapsulamos en una función principalmente para un ordenamiento de codigo. Ademas me permite poder llamar a esta con algun evento en particular. |
| 360 | +```javascript |
| 361 | +function renderProducts(arr) { |
| 362 | + for (product of arr) { |
| 363 | + const productCard = document.createElement("div"); |
| 364 | + productCard.classList.add("product-card"); |
| 365 | + |
| 366 | + const productImg = document.createElement("img"); |
| 367 | + productImg.setAttribute("src", product.image); |
| 368 | + |
| 369 | + const productInfo = document.createElement("div"); |
| 370 | + productInfo.classList.add("product-info"); |
| 371 | + |
| 372 | + const productInfoDiv = document.createElement("div"); |
| 373 | + const productPrice = document.createElement("p"); |
| 374 | + productPrice.innerText = "$" + product.price; |
| 375 | + const productName = document.createElement("p"); |
| 376 | + productName.innerText = product.name; |
| 377 | + |
| 378 | + productInfoDiv.appendChild(productPrice); |
| 379 | + productInfoDiv.appendChild(productName); |
| 380 | + |
| 381 | + const productInfoFigure = document.createElement("figure"); |
| 382 | + const productImgCard = document.createElement("img"); |
| 383 | + productImgCard.setAttribute("src", "./icons/bt_add_to_cart.svg"); |
| 384 | + |
| 385 | + productInfoFigure.appendChild(productImgCard); |
| 386 | + |
| 387 | + productInfo.appendChild(productInfoDiv); |
| 388 | + productInfo.appendChild(productInfoFigure); |
| 389 | + |
| 390 | + productCard.appendChild(productImg); |
| 391 | + productCard.appendChild(productInfo); |
| 392 | + |
| 393 | + cardsContainer.appendChild(productCard); |
| 394 | + } |
| 395 | +} |
| 396 | + |
| 397 | +renderProducts(productList); |
| 398 | +``` |
| 399 | +En la proxima clase vamos a estar agregando eventos a este codigo, ya que ahora resolvimos generar el HTML a traves de JS. |
| 400 | +
|
| 401 | +
|
331 | 402 |
|
332 | 403 |
|
0 commit comments