Excelente explicación, amigo. Realmente sencilla y clara. Nos pasamos la vida repitiendo "no hay que reinventar la rueda" pero muchos desconocemos por que dicha rueda "es redonda".
espectacular, estoy aprendiendo muchisimo con tus videos, por cierto, si alguien se dio cuenta, si varias tareas tienen el mismo "title" el las borra todas. hay que agregar en la funcion que reciba titulo, y tambien description,, y despues el IF quedaria asi --- if((tasks[i].title == title) && (tasks[i].description == description)) --- asi aunque el title de 3 tareas sea igual, solo borrara cuando titulo y descripcion coincidan! Gracias por tus aportes a la comunidad!! sos un CRACKZAZO
Muy buena explicación bro. En mi caso no queria hacer una lista de tarea pero me ayudaste mucho a entender como podria resolver el problema que tenia Muchas gracias! :D
Muy buena la aplicación, aunque noté algunos errores importantes como por ejemplo si se agregan dos tareas con el mismo "title" y le das a delete a algún botón se van a borrar las dos tareas y no solo la que se presionó el botón. Otro error q noté es el nombre de las variables, son muy similares y es difícil diferenciarlas, como así también el uso del onclick, es considerado una mala práctica y hay otras alternativas y además el uso de tantos de divs. El resto de las funcionalidades parece andar bien y me gusta mucho como usas Bootstrap, estoy aprendiendo bastante de tus videos. Saludos desde Argentina.
de hecho no, tendrias que verificar bien el codigo, hablo referente a que si tienes 2 tareas con el mismo nombre se eliminan las dos, eso es falso, al menos en mi caso
Podría haber títulos y descripciones repetidas, lo mejor es asignarle una propiedad id que contenga un único valor. document.getElementById('formTask').addEventListener('submit', saveTask); function saveTask(e) { let title = document.getElementById('title').value; let description = document.getElementById('description').value; console.log(description) let task = { title, description }; if(localStorage.getItem('tasks') === null) { let tasks = []; task.id = 0; tasks.push(task); // adicionar propiedad id localStorage.setItem('tasks', JSON.stringify(tasks)); } else { let tasks = JSON.parse(localStorage.getItem('tasks')); task.id = tasks.length;// adicionar propiedad id tasks.push(task); localStorage.setItem('tasks', JSON.stringify(tasks)); } getTasks(); document.getElementById('formTask').reset(); e.preventDefault(); } function deleteTask(id) { console.log(id) let tasks = JSON.parse(localStorage.getItem('tasks')); tasks = tasks.filter( task => task.id !== id ); // Crea nuevo array excluyendo el elemento que tenga el id a eliminar localStorage.setItem('tasks', JSON.stringify(tasks)); getTasks(); } function getTasks() { let tasks = JSON.parse(localStorage.getItem('tasks')); let tasksView = document.getElementById('tasks'); tasksView.innerHTML = ''; for(let i = 0; i < tasks.length; i++) { left id = tasks[i].id let title = tasks[i].title; let description = tasks[i].description; tasksView.innerHTML += ` ${title} - ${description} Delete
Podrías tener los cursos en udemy o alguna web similar para obtener certificaciones, explicas muy bien, mejor que en los que dictan clases en esas webs. Saludos
Muy bien explicado. Gracias. Me puede decir como puedo evitar guardar valores nulos en el local storage? Y como puedo crear un boton para editar? Gracias otra vez.
para que la aplicación te muestre la nueva nota la mejor opción es solo quitar el e.preventDefault() y ya para que la pagina se refresque automáticamente.
Tengo una consulta, quizas sea una boludez para los mas experimentado pero me esta complicando. Uso visual studio code, al usar las tildes invertidad, me deja de reconocer el autocompletado de metodos/variables, es como si estuviese escribiendo dentro de unas dobles comillas un array, hay alguna manera de que los reconozca para no tener q tipear todo a mano?
Muy bueno ! Lo único que me confundió bastante es el tema de las variables y constantes Task, task, tasks ... Con otros nombres seria un poco mas entendible ... Pero sacando eso, muy bueno
hola disculpa estaba practicando usando de base tu video. creando una lista de empleados con nombres, apellidos, cargos y otros atributos. me percate que si hay por ejemplo alguien con el mismo nombre me los borra a ambos o los que haya. usando en el delete la variable nombre. como evito esto. bueno pienso si le agrego mas atributos a comprar. pero si hubiese una mejor forma me gustaría saber.
Muy buenos todos tus videos, pero acabo de tener un problema. En la función saveTask, en el else, el tasks.push(task); me da un error al cargar el segundo objeto. De hecho copié tu código y me sigue dando un error.
Hola muy buen vídeo. Yo tengo duda, se supe que ya puse lo mismo que ahí, pero a mi no me aparecen las tareas. Mi duda es que si al hacerlo o visualizar la app en un teléfono no funciona lo mismo de localStorage???
encontré un problema, yo creo una lista con el titulo a y descripción a, luego creo otra con titulo a y descripción b, y elimino la del titulo a con descripción b, se elimina la del titulo a con descripción a, ya que es la primera coincidencia que encuentre, podría arreglarse al poner un índice, y con el bucle que encuentre por el indicie
Muchas gracias por el video :D !!! Esta excelente !!! :D Una duda, por ejemplo, cuando se hace un carrito de compras, o cuando queremos que esas tareas se queden guardadas para que el usuario las vea cada que entre a su sesión... como se hace eso ? Como podemos tener registro de lo que todavía le falta hacer ? Se requiere algún archivo Json o cosas así ? Soy nuevo en esto del diseño web .. Pero me encantaría aprender :D Saludos.
si usas var fuera de una función, tiene un alcance global. si usas var dentro de una función, pertenece a esa función. si usas var dentro de un bloque (por ejemplo el ciclo for), la variable sigue estando disponible fuera de ese bloque. let está limitada al bloque (o expresión) donde ésta es definida. si usas let dentro de un bloque (por ejemplo el ciclo for), la variable solamente está disponible dentro de ese ciclo.
Hola Ricardo, no es una buena prática para el SEO (posicionamiento en buscadores), esto no importaría mucho si se trata de una aplicación, pero para un sitio web se tiene que considerar. y para hacerlo tan solo usa las etiquetas estandar HTML como section, span, article, header, etc. colocando en cada una de ellas las clases de Bootstrap :)
Hola!!! Para crear una app como por ejemplo un carrito de compras, he tratado de hacerla con myadmin y php no me funciona veo que lo que dices es la forma . no se si así es. Chao.
Saludos Fazt. Me da el siguiente error Uncaught TypeError: Cannot set property 'innerHTML' of null debido a la siguiente línea de código taskView.innerHTML = ''; Agradezco su ayuda...
quizas ya encontraste la solucion pero por las dudas te digo. Resulta que si no utilizas el mismo ID que tenes en la etiqueta div del archivo HTML no te funciona. Es un pequeño detalle pero es la razon por la cual no funcionaba. Si necesitas ayuda avisame
Que tal comunidad de Fazt alguien me da una ayuda en el minuto 28:47 Fazt indica que si en el local storage hay un elemento tasks y este es null entonces vamos a empesar a crear tareas esto con el "localStorage.getItem('tasks')" que nos permite ir al local storage y ver si existe un elemento "tasks" en este caso. Pero anterior mente dijo que para almacenarlo en la memoria local se ejecuta un "localStorage.setItem('tasks', task);" MI DUDA es por que se guardan tareas en el local storage si en ningún momento ejecutamos .getItem en la función como es que la función guarda el objeto "task" en memoria si en ninguna parte le indicamos que lo guardara
tasks.length; i++){ //Uncaught TypeError: Cannot read property 'Length' of null at getTasks (main.js:32) at main.js:45// ME SALE ESTE ERROR POR CONSOLA. Alguna consejo para solucionarlo?? gracias!!
buenas, ¿ si una constante esta creada dentro de una función, es local o global ? alguien podría responderme es que aun no me queda muy claro . y si alguien me recomienda alguna comunidad de programación web donde puedas aprender y aportar información gracias
Fazt, soy fiel seguidora de tus tutoriales, gracias a ti he aprendido muchisimo en los pasados meses, podrias indicarme el link correcto para la comunidad de Slack, ya que el enlace publicado esta inactivo. De antemano mil gracias!
Hola Karla. Es un verdadero gusto que te sirva el contenido. El slack hace bastante tiempo que no lo visito porque no muchas personas se podían unir fácilmente como lo has notado. Así que la comunidad se ha movido a discord, te dejo un enlace para que puedas unirte y si tienes algún problema me comentas. Un saludo y mucha suerte :) discord.gg/37PHuNw
encuentro todos los tutoriales muy interesantes pero a todos les falta el mismo detalle final que es guardar los datos, no pido en una db pero al menos en un json o algo.
Hola Lewin, no hay ningun motivo, tan solo estoy usando windows, porque es lo más usado, y trato de mantener las cosas simples, pero pronto subiré más contenido usando Ubuntu y otras distros de Linux. Un Saludo :)
Si esta utilizando template literales por ejemplo: let mundo =" mundo "let hola= ` hola ${mundo}`puede poner una variable sin tener que contactenar todo.
Excelente explicación, amigo. Realmente sencilla y clara. Nos pasamos la vida repitiendo "no hay que reinventar la rueda" pero muchos desconocemos por que dicha rueda "es redonda".
espectacular, estoy aprendiendo muchisimo con tus videos, por cierto, si alguien se dio cuenta, si varias tareas tienen el mismo "title" el las borra todas. hay que agregar en la funcion que reciba titulo, y tambien description,, y despues el IF quedaria asi --- if((tasks[i].title == title) && (tasks[i].description == description)) --- asi aunque el title de 3 tareas sea igual, solo borrara cuando titulo y descripcion coincidan! Gracias por tus aportes a la comunidad!! sos un CRACKZAZO
Muy buena explicación bro. En mi caso no queria hacer una lista de tarea pero me ayudaste mucho a entender como podria resolver el problema que tenia
Muchas gracias! :D
Saludos Fazt, excelente video, es un honor para mi apoyar su talento. Saludos desde Cúcuta Colombia
Los ejercicios prácticos son muy buenos. Gracias por compartir tu talento. Espero que sigas con más tutoriales de este tipo
Excelente video Fast es la mejor explicación que eh encontrado en español para localStorage un fuerte abrazo mi hermano a seguir avanzando.
Uuy Sr. Fazt uste si es el reduro de la programación! al fin alguien me explica bien como usar localstorage
Muchas Gracias Fucniona muy bien, un abrazo desde Bogotá - Colombia.
Funciona!!!
Gracias Fazt, no sabía como se almacenan los datos en el navegador; ahora voy a seguir el tutorial de Angular. Saludos desde Maracay, Venezuela.
Muy buena la aplicación, aunque noté algunos errores importantes como por ejemplo si se agregan dos tareas con el mismo "title" y le das a delete a algún botón se van a borrar las dos tareas y no solo la que se presionó el botón. Otro error q noté es el nombre de las variables, son muy similares y es difícil diferenciarlas, como así también el uso del onclick, es considerado una mala práctica y hay otras alternativas y además el uso de tantos de divs. El resto de las funcionalidades parece andar bien y me gusta mucho como usas Bootstrap, estoy aprendiendo bastante de tus videos.
Saludos desde Argentina.
de hecho no, tendrias que verificar bien el codigo, hablo referente a que si tienes 2 tareas con el mismo nombre se eliminan las dos, eso es falso, al menos en mi caso
Podría haber títulos y descripciones repetidas, lo mejor es asignarle una propiedad id que contenga un único valor.
document.getElementById('formTask').addEventListener('submit', saveTask);
function saveTask(e) {
let title = document.getElementById('title').value;
let description = document.getElementById('description').value;
console.log(description)
let task = {
title,
description
};
if(localStorage.getItem('tasks') === null) {
let tasks = [];
task.id = 0;
tasks.push(task); // adicionar propiedad id
localStorage.setItem('tasks', JSON.stringify(tasks));
} else {
let tasks = JSON.parse(localStorage.getItem('tasks'));
task.id = tasks.length;// adicionar propiedad id
tasks.push(task);
localStorage.setItem('tasks', JSON.stringify(tasks));
}
getTasks();
document.getElementById('formTask').reset();
e.preventDefault();
}
function deleteTask(id) {
console.log(id)
let tasks = JSON.parse(localStorage.getItem('tasks'));
tasks = tasks.filter( task => task.id !== id ); // Crea nuevo array excluyendo el elemento que tenga el id a eliminar
localStorage.setItem('tasks', JSON.stringify(tasks));
getTasks();
}
function getTasks() {
let tasks = JSON.parse(localStorage.getItem('tasks'));
let tasksView = document.getElementById('tasks');
tasksView.innerHTML = '';
for(let i = 0; i < tasks.length; i++) {
left id = tasks[i].id
let title = tasks[i].title;
let description = tasks[i].description;
tasksView.innerHTML += `
${title} - ${description}
Delete
`;
}
}
getTasks();
Por qué eres tann genial! ? Gracias!
Muy buena explicación, los conceptos bien claros. Muchas gracias por tu contenido
Qué buen tutorial! Siempre se aprende algo nuevo con Fazt!!!
Grande Fazt eres un maquina, cuando pueda encontrar trabajo de programador me unire a la comunidad Fazt
Como siempre, la explicacion es muy clara y simple. Un crack fazt code
Solo puedo decir que eres un crack! Aprendo mucho con tus videos. Felicidades y sigue así!
Me pareció brutal. Genial, en serio. Muchas gracias por compartir los conocimientos.
Podrías tener los cursos en udemy o alguna web similar para obtener certificaciones, explicas muy bien, mejor que en los que dictan clases en esas webs. Saludos
Muy bien explicado. Gracias.
Me puede decir como puedo evitar guardar valores nulos en el local storage? Y como puedo crear un boton para editar?
Gracias otra vez.
Tutoriales muy instructivos, felicitaciones por tu trabajo amigo
Muchas gracias bien explicado ire a buscar mas videos de tu canal para aprender otras cosas :)
Excelente video FELICITACIONES!. Una pregunta como podria crear un boton para que me edite mi texto?
para que la aplicación te muestre la nueva nota la mejor opción es solo quitar el e.preventDefault() y ya para que la pagina se refresque automáticamente.
Gracias bro, es muy buena la forma en que explicas y tu codigo es muy limpio, se entiende facil
Tengo una consulta, quizas sea una boludez para los mas experimentado pero me esta complicando. Uso visual studio code, al usar las tildes invertidad, me deja de reconocer el autocompletado de metodos/variables, es como si estuviese escribiendo dentro de unas dobles comillas un array, hay alguna manera de que los reconozca para no tener q tipear todo a mano?
Wow, standing ovation, me encanto ese video.^_^ Muchas gracias.
Un gusto que te haya servido Esleidin :)
@@FaztCode No te imaginas cuanto, muchas gracias por tu servicio a la comunidad, éxitos.
En lugar de usar un sumit y luego cancelarle el evento, no sería mejor usar un button?
Que agradable sujeto este Fazt :)
muy bueno solo diré, le falto html a tu
para una pagina web que quieras que se encuentre en buscadores se consideraria el SEO, pero para una aplicación como esta realmente no importa mucho
Muy bueno ! Lo único que me confundió bastante es el tema de las variables y constantes Task, task, tasks ... Con otros nombres seria un poco mas entendible ... Pero sacando eso, muy bueno
Justamente eso mismo venia a comentar ajajjaja fue muy confuso tantos Tasks no sabia si estaba llamando un id o que
En el minuto 35:56 los "tildes de javascript" no me funcionan. Son algún tilde especial que se deba hacer con que combinación de teclas...?
hola disculpa estaba practicando usando de base tu video. creando una lista de empleados con nombres, apellidos, cargos y otros atributos. me percate que si hay por ejemplo alguien con el mismo nombre me los borra a ambos o los que haya. usando en el delete la variable nombre. como evito esto. bueno pienso si le agrego mas atributos a comprar. pero si hubiese una mejor forma me gustaría saber.
Aportas mucho valor amigo 👏. Muchas gracias.
Gracias pana he aprendido mucho contigo.
Excelente!
Muchas gracias.
Muy buenos todos tus videos, pero acabo de tener un problema. En la función saveTask, en el else, el tasks.push(task);
me da un error al cargar el segundo objeto. De hecho copié tu código y me sigue dando un error.
Excelente tutorial :), sigue subiendo este tipo de contenido que se aprende muchísimo, por favor!!
Hola muy buen vídeo. Yo tengo duda, se supe que ya puse lo mismo que ahí, pero a mi no me aparecen las tareas. Mi duda es que si al hacerlo o visualizar la app en un teléfono no funciona lo mismo de localStorage???
Excelente amigo gran video
Buenisimo fazt!
Hola que tal tengo una duda.
En el minuto 32 por que es un arreglo y adentro es un objeto si lo convertimos en string previamente?
Buenas tardes, realizando el código, al momento de hacer que se muestre en la intefaz no me sale nada
muy buen video se te agradece bastante soy uno de los primeros subs
encontré un problema, yo creo una lista con el titulo a y descripción a, luego creo otra con titulo a y descripción b, y elimino la del titulo a con descripción b, se elimina la del titulo a con descripción a, ya que es la primera coincidencia que encuentre, podría arreglarse al poner un índice, y con el bucle que encuentre por el indicie
Muchas gracias! Me ha sido muy util
Eres un crack!! Podrias hacer una app con api de soundcloud en JS?
Entonces las tareas siempre estaran dentro de un array aunque pasen por el metodo de stringify?
Muchas gracias por el video :D !!!
Esta excelente !!! :D
Una duda, por ejemplo, cuando se hace un carrito de compras, o cuando queremos que esas tareas se queden guardadas para que el usuario las vea cada que entre a su sesión... como se hace eso ?
Como podemos tener registro de lo que todavía le falta hacer ?
Se requiere algún archivo Json o cosas así ? Soy nuevo en esto del diseño web ..
Pero me encantaría aprender :D
Saludos.
buen video.!
Por cierto alguien puede explicar cual es la diferencia entre var y let en las declaraciones javascript ¿?
si usas var fuera de una función, tiene un alcance global.
si usas var dentro de una función, pertenece a esa función.
si usas var dentro de un bloque (por ejemplo el ciclo for), la variable sigue estando disponible fuera de ese bloque.
let está limitada al bloque (o expresión) donde ésta es definida.
si usas let dentro de un bloque (por ejemplo el ciclo for), la variable solamente está disponible dentro de ese ciclo.
@@juankfayad5788 yo no lo sabía 👌
este video me dio mucha luz
Excelente ,podias explicar como guardar en este mismo ejemplo los datos de el array en una tabla de una base de datos en sql, agradecido.
Me ha encantado, te agradezco mucho!
Andas volando!!! Buen profe!!
genio..!!!! ....que buen video.!!!
Gran tutorial Fazt, gracias por la dedicacion
Muy bien explicado gracias!!
Hay manera de utlizar bootstrap sin tantos div's? Utilizar tantos div's es una buena practica?
Hola Ricardo, no es una buena prática para el SEO (posicionamiento en buscadores), esto no importaría mucho si se trata de una aplicación, pero para un sitio web se tiene que considerar. y para hacerlo tan solo usa las etiquetas estandar HTML como section, span, article, header, etc. colocando en cada una de ellas las clases de Bootstrap :)
bro, un error que vi, si tienes el form vacio, envia todo y aparece el boton de delete
No entiendo bien que hace la funcion getTasks en general, y como es que el ciclo for hace que se loggien todas las tareas
Excelente video!!!! Muy bien explicado.
Hola buen contenido Fazt, una pregunta por que no ocupa el ancho de toda la tarjeta el boton submit, tengo el mismo codigo que tu
en el HTML Save
Creo que ya se por que, le puse el codigo css de bootstrap 5 y tu utilizas el 4.1.1
Como siempre fazt el mejor 😀
Muy bueno!, espero más tutoriales :D! jeje
cuando coloco imput no me aparece la caja para escribir, alguna posible solucion?
Muchas gracias Fazt!
Excelente video !
Se pueden almacenar elementos ("Divs")?
Hola!!! Para crear una app como por ejemplo un carrito de compras, he tratado de hacerla con myadmin y php no me funciona veo que lo que dices es la forma . no se si así es.
Chao.
Saludos Fazt. Me da el siguiente error Uncaught TypeError: Cannot set property 'innerHTML' of null debido a la siguiente línea de código taskView.innerHTML = '';
Agradezco su ayuda...
hola Dennys. Pudiste resolverlo? a mi me aparece el mismo error
quizas ya encontraste la solucion pero por las dudas te digo. Resulta que si no utilizas el mismo ID que tenes en la etiqueta div del archivo HTML no te funciona. Es un pequeño detalle pero es la razon por la cual no funcionaba. Si necesitas ayuda avisame
Me parece que es xq estas usando una sola comilla doble en el inner HTML
Eres un Dios.
Que tal comunidad de Fazt alguien me da una ayuda en el minuto 28:47 Fazt indica que si en el local storage hay un elemento tasks y este es null entonces vamos a empesar a crear tareas esto con el "localStorage.getItem('tasks')" que nos permite ir al local storage y ver si existe un elemento "tasks" en este caso. Pero anterior mente dijo que para almacenarlo en la memoria local se ejecuta un "localStorage.setItem('tasks', task);" MI DUDA es por que se guardan tareas en el local storage si en ningún momento ejecutamos .getItem en la función como es que la función guarda el objeto "task" en memoria si en ninguna parte le indicamos que lo guardara
gran video y ejemplo!
Me encantaria un ejercicio en php y mysql, buen video!!
Lo tendré muy cuenta :D
Like para que lo siga teniendo en cuenta
Fazt está lista de Javascript se irá actualizando con nuevos videos? Está genial eso de mini proyectos para ir practicando
Es buena idea, voy a elaborar más ejemplos cortos :)
@@FaztCode muchas gracias , esos mini proyectos para practicar js de distintas formas y demás va genial
tasks.length; i++){
//Uncaught TypeError: Cannot read property 'Length' of null
at getTasks (main.js:32)
at main.js:45// ME SALE ESTE ERROR POR CONSOLA.
Alguna consejo para solucionarlo??
gracias!!
Excelente video muy didactico
buenas, ¿ si una constante esta creada dentro de una función, es local o global ? alguien podría responderme es que aun no me queda muy claro . y si alguien me recomienda alguna comunidad de programación web donde puedas aprender y aportar información gracias
Muy bueno fazt! Oye, aprendes del canal de Brad Traversy?
Este es un ejemplo de un Libro de javascript que esta mi pagina, pero muy bueno es ese canal, y el de coding train, tambien echale un ojo.
Fazt Code me pasas ese libro?
No sé si hubo alguna clase de actualización con js pero me dice que *push* no es una función xd
Lo mismo😔😔😔
no me deja enlazar el js con la pagina :c
por que se escuchan disparos ?
Simple, vivo en Latinoamérica :)
podrias indicarme el minuto donde se escucharon? es solo por curiosidad
hola deebs expicar cmponentes Es6 porfavor
Fazt, soy fiel seguidora de tus tutoriales, gracias a ti he aprendido muchisimo en los pasados meses, podrias indicarme el link correcto para la comunidad de Slack, ya que el enlace publicado esta inactivo. De antemano mil gracias!
Hola Karla. Es un verdadero gusto que te sirva el contenido. El slack hace bastante tiempo que no lo visito porque no muchas personas se podían unir fácilmente como lo has notado. Así que la comunidad se ha movido a discord, te dejo un enlace para que puedas unirte y si tienes algún problema me comentas. Un saludo y mucha suerte :) discord.gg/37PHuNw
No funciona los buttons con el link de la pagina de bootstrap pero si funciona con el nlace
bootswatch.com/
encuentro todos los tutoriales muy interesantes pero a todos les falta el mismo detalle final que es guardar los datos, no pido en una db pero al menos en un json o algo.
hola fazt puedes hacer una aplicaion como ventas, ferreteria, hotel, etc
en javascript
Alguien mas en maraton de JavaScript?
muchas gracias!
wouuuuu!! buen video !!! un like y un sub nuevo :D , sigue asi crack
Increíble!
Tiene algo que ver las versiones del boostrark pd:perdon si lo escribi mal
o no
Hola fazt. Hay un motivo en especial por el cual dejaste de usar Ubuntu mate? Por lo menos en los vídeos que he visto.
Hola Lewin, no hay ningun motivo, tan solo estoy usando windows, porque es lo más usado, y trato de mantener las cosas simples, pero pronto subiré más contenido usando Ubuntu y otras distros de Linux. Un Saludo :)
Tienes razón. Sigue así fazt. Espero videos también con Linux. Yo uso linux y windows también. Saludos :-)
exelente!
Gracias ☺♥
Brutal
Save 11:27
32:11
gran fazt en vs code no hay como llamar .value :(
Para que sirve esto:
${ }
Gracias 🤗
Si esta utilizando template literales por ejemplo: let mundo =" mundo "let hola= ` hola ${mundo}`puede poner una variable sin tener que contactenar todo.
@@Devniel54 muchas gracias, aunque no entendi, como es eso de template literales?
vas muy rápido man
Muy pronto voy a estar renovando este ejemplo, tomare en cuenta tu comentario para explicar un poco más lento :)