Intentando entender un append

  • Autor Autor Barakas
  • Fecha de inicio Fecha de inicio
B

Barakas

Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Muy buenas,

Estoy intentando entender un código que he visto (ingeniería inversa :caravolteada🙂 pero no llego a entender el funcionamiento del append.

Es un problema de novato total, pero bueno, llevo atascado un día aquí y no encuentro la lógica.

Os pongo el código HTML:

Insertar CODE, HTML o PHP:
<!DOCTYPE HTML>
<html lang="es">

<head>
	<meta charset="utf-8">
	<title>Operando con JSON</title>
	
</head>
<body>
	<h1>JSON</h1>
	<div id="coins">
		<h2>Monedas</h2>
	</div>

	<script type="text/javascript" src="js/json.js"></script>
</body>

</html>

Y el Javascript:
Insertar CODE, HTML o PHP:
'use strict'

// JSON - Javascript Object Notation


var cryptos = {
	titulo: 'Bitcoin',
	year: 2009,
	creador: 'Satoshi Nakamoto'
};

var monedas = [
	{titulo: "Euro", year: 2000, pais: "España"},
	cryptos
];


var caja_monedas = document.querySelector("#coins");
var index;
for (index in monedas){
	var p = document.createElement("p");
	p.append(monedas[index].titulo + " - " + monedas[index].year);
	caja_monedas.append(p);
}

Por lo que entiendo ocurre lo siguiente:

1. Se crea una variable llamada caja_monedas que es un querySelector del div con id #coins. Esto se utiliza para modificar dicho div.
2. Se crea un bucle for in donde primero se forma una variable (p) donde se crea el elemento <p>.
3. En el mismo bucle se concatena el <p> con el array mediante un append -> p.append(monedas[index].titulo + " - " + monedas[index].year);
4. Se concatena caja_monedas con el <p>.

Creo que lo estoy analizando mal porque no tiene sentido según lo entiendo.
En todo caso, se debería concatenar de esta forma:

querySelector+<p>+array+<p>

Es decir, el querySelector es quien da la "orden" de modificar ese div en el html, seguido de <p> para abrir párrafo y por último el array. Pero esa última línea de javascript...me da que no lo estoy entiendo bien.

¿Algún rayo de luz?

Gracias!!! 🙂
 
No se concatena. Append incluye HTML dentro de otro elemento HTML.

document.createElement('p') crea en memoria un elemento HTML completo del tipo p (no es que simplemente añada la cadena al html).
Luego a ese elemento, que solo existe en la memoria del navegador, dentro de la variable p, se le hace un .append para meter HTML dentro (en este caso una simple cadena).
Después se le hace .append a la caja de monedas para meter HTML dentro otra vez, en este caso el elemento que estaba en memoria, en la variable p.


Por cierto, querySelector no modifica nada. document.querySelector te devuelve el primer elemento HTML del DOM que coincida con el selector que le pases por parámetro. Es append lo que modifica el elemento. Realmente es que el elemento está sincronizado con el DOM porque es el propio div de la caja lo que estás manipulando, podrías hacer lo mismo modificando directamente su variable .innerHTML y añadiendo ahi una cadena con el HTML que quieras mostrar.
 
Última edición:
Muchísimas gracias por tu respuesta, me ha quedado muy claro y ahora lo entiendo bien 🙂🙂🙂🙂

Saludos!
 
Hola compañero..
El array no lo imprime como tal, ya que se está accediendo al contenido mediante el índice y la propiedad dentro .. array [posición].titulo esto no imprime array sino un título

Saludos!!
 

Temas similares

Atrás
Arriba