CSS Counter: Creando Listas Numeradas con Elegancia

CSS Counter: Creando Listas Numeradas con Elegancia

Tiempo de lectura: < 1 minuto Buenos dias, hoy os muestro un breve ejemplo de como sería: Esto por norma general, como ya sabemos, devuelve puntitos, si nosotros en vez de puntitos queremos que devuelva números, sin ser una lista numerada, nuestro css, debe quedar de la siguiente manera: Este código CSS se utiliza para numerar los elementos de una lista … Leer más

Guía completa de códigos de estado HTTP: Comprende los mensajes del servidor web

Tiempo de lectura: 2 minutos ¡Buenos días! Y felices fiestas!🎄. Hoy os traigo un tutorial básico sobre los códigos de estado HTTP. Siempre viene bien tenerlos a mano, aquí os dejo los más comunes! Códigos de estado HTTP comunes: Explicación breve de cada uno: ¿Qué hacer si encuentras estos errores? ¡Espero que esta guía os ayude a comprender mejor estos … Leer más

Introducción a JavaScript y Manipulación del DOM

Tiempo de lectura: < 1 minuto JavaScript es un lenguaje de programación esencial para el desarrollo web. Con él, puedes hacer que tus sitios web sean interactivos y dinámicos al interactuar con el Document Object Model (DOM). El DOM es una representación en memoria de la estructura de tu página web, y JavaScript te permite acceder y modificar elementos en el … Leer más

Cómo crear un acordeón accesible con Bootstrap

Cómo crear un acordeón accesible con Bootstrap

Tiempo de lectura: 3 minutos ¡Buenos dias! Os dejo un nuevo tutorial, para que empecéis el finde con ganas. En el tutorial de hoy os voy a mostrar como hacer, un un acordeón con Bootstrap, pero vamos a añadir una serie de atributos que además, hacen que este sea accesible para todos. Espero que os guste, comenzamos: Paso 1: Configuración … Leer más

Lista de tareas personalizada con checkbox para marcar y desmarcar tareas realizadas Bootstrap y almacenamiento local en este tutorial (parte 2)

Lista de tareas personalizada con checkbox para marcar y desmarcar tareas realizadas Bootstrap y almacenamiento local en este tutorial (parte 2)

Tiempo de lectura: 2 minutos ¡Buenos dias!, continuando con el tutorial anterior sobre como crear un TO-DO LIST, en este de hoy, os dejo una actualización de funcionalidad, en la que hemos implementado lo siguiente: En este ejemplo, hemos agregado un nuevo evento de escucha al <ul> de la lista de tareas completadas (completedList). Cuando se marque o desmarque una … Leer más

Aprende a crear una lista de tareas personalizada con Bootstrap y almacenamiento local en este tutorial

Tiempo de lectura: 2 minutos

¡¡¡Buenos dias y feliz lunes !!!,

Vamos a por otro tutorial, en este caso se trata de una sencilla aplicación de creación de tareas o TO-DO LIST

A continuación os dejo el código de una manera de hacerlo:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
    <script src="to-do-list.js"></script>
    <title>To-do list para devcodelight</title>
</head>

<body>
    <div class="container">
        <h1 class="text-center">Lista de Tareas para Devcodelight</h1>
        <form id="todo-form">
          <div class="input-group mb-3">
            <input type="text" id="todo-input" class="form-control" placeholder="Agregar nueva tarea">
            <div class="input-group-append">
              <button class="btn btn-primary" type="submit">Agregar</button>
            </div>
          </div>
        </form>
        <ul id="todo-list" class="list-group"></ul>
        <button id="clear-btn" class="btn btn-danger">Limpiar Lista</button>
      </div>


</body>

</html>
El evento DOMContentLoaded se dispara cuando el documento HTML ha sido completamente cargado y parseado, sin necesidad de esperar a que todos los recursos externos, como imágenes o scripts, se hayan descargado.
<script>
        document.addEventListener('DOMContentLoaded', function () {
            const form = document.getElementById('todo-form');
            const todoInput = document.getElementById('todo-input');
            const todoList = document.getElementById('todo-list');
            const clearButton = document.getElementById('clear-btn');

            form.addEventListener('submit', function (event) {
                event.preventDefault();
                const todoText = todoInput.value;

                if (todoText) {
                    const todoItem = document.createElement('li');
                    todoItem.classList.add('list-group-item');
                    todoItem.textContent = todoText;
                    todoList.appendChild(todoItem);
                    todoInput.value = '';
                    saveTodos();
                }
            });

            clearButton.addEventListener('click', function () {
                todoList.innerHTML = '';
                saveTodos();
            });

            function loadTodos() {
                const todos = localStorage.getItem('todos');

                if (todos) {
                    todoList.innerHTML = todos;
                }
            }

            function saveTodos() {
                localStorage.setItem('todos', todoList.innerHTML);
            }

            loadTodos();
        });
    </script>

Implementación de la lógica en JavaScript

  • Añadimos un evento de escucha (addEventListener) al formulario (form) que se activa cuando se envía (submit) el formulario.
  • Dentro de la función del evento, prevenimos el comportamiento predeterminado del formulario utilizando event.preventDefault().
  • Obtenemos el valor del campo de entrada de la tarea (todoInput.value).
  • Creamos un nuevo elemento de lista (<li>) y le asignamos el valor de la tarea ingresada.
  • Agregamos la tarea a la lista de tareas (todoList.appendChild(todoItem)).
  • Limpiamos el campo de entrada (todoInput.value = '') para que esté vacío para ingresar una nueva tarea.
  • Llamamos a la función saveTodos() para guardar las tareas en el almacenamiento local.

Carga y guardado de tareas en el almacenamiento local

  • Definimos dos funciones: loadTodos() y saveTodos().
  • La función loadTodos() obtiene las tareas almacenadas en el almacenamiento local y las carga en la lista de tareas (todoList.innerHTML = todos).
  • La función saveTodos() guarda las tareas en el almacenamiento local utilizando localStorage.setItem('todos', todoList.innerHTML).

Carga inicial de las tareas al cargar la página

  • Utilizamos document.addEventListener('DOMContentLoaded', loadTodos) para llamar a la función loadTodos() cuando el documento HTML haya sido completamente cargado.
  • De esta manera, al cargar la página, se cargarán automáticamente las tareas previamente guardadas en el almacenamiento local.

Botón para limpiar la lista de tareas

  • Agregamos un botón adicional en el HTML con el ID clear-btn.
  • Añadimos un evento de escucha (addEventListener) al botón clear-btn que se activa cuando se hace clic en él.
  • Dentro de la función del evento, borramos el contenido de la lista de tareas (todoList.innerHTML = '').
  • Llamamos a la función saveTodos() para guardar los cambios en el almacenamiento local.

¡Y eso es todo! Siguiendo estos pasos, puedes crear una aplicación de lista de tareas funcional utilizando HTML, Bootstrap, CSS, JavaScript y localStorage. Más adelante iré añadiendo nueva funcionalidad.

No dudes en dejar tu comentario y tu like si te ha gustado!

Construyendo un diseño responsive con Bootstrap Grid: Descubre cómo adaptar tus diseños a diferentes tamaños de pantalla utilizando las clases del sistema de grid de Bootstrap.

Construyendo un diseño responsive con Bootstrap Grid: Descubre cómo adaptar tus diseños a diferentes tamaños de pantalla utilizando las clases del sistema de grid de Bootstrap.

Tiempo de lectura: 3 minutos Buenos días, en el tutorial de hoy, os voy a hablar sobre la estructura GRID de BOOTSTRAP. El sistema de grid de Bootstrap es una de las características más destacadas y útiles de este framework CSS. Proporciona una estructura de filas y columnas que permite crear diseños flexibles y responsivos de manera sencilla. El sistema … Leer más

Error al lanzar tu aplicación de React Native en Local (CommandError: No development build (com.nombre) for this project is installed. Please make and install a development build on the device first.)

Error al lanzar tu aplicación de React Native en Local (CommandError: No development build (com.nombre) for this project is installed. Please make and install a development build on the device first.)

Tiempo de lectura: 2 minutos Buenos dias, en el tutorial de hoy, os voy a poner como he solucionado un error que me ha ocurrido ya un par de veces y no lograba solucionar. Al ejecutar la aplicación en mi móvil de forma local como en cualquier móvil, se hace con el siguiente comando: Si todo es correcto teniendo todo … Leer más

Cómo crear un botón loader con HTML, CSS y jQuery

Tiempo de lectura: 2 minutos ¡Buenas tardes! Hoy os traigo un tutorial muy guay, y interesante sobre un elemento que puedes usar en tu web. ¡Comenzamos! Un botón loader es una funcionalidad que permite a los usuarios saber cuándo se está procesando una tarea en segundo plano, como por ejemplo una petición a un servidor. En este tutorial aprenderás a … Leer más

Valores NULOS de SQL o SQL NULL Values

Tiempo de lectura: < 1 minuto En SQL, un valor nulo es un valor que no tiene un valor específico o válido. En otras palabras, un valor nulo representa la ausencia de un valor en una columna específica. Es importante tener en cuenta que un valor nulo es diferente de un valor cero o una cadena vacía. Existen varias formas de … Leer más