¿Cómo cambiar el color de una variable?

JavaScript: Cambia el color de elementos HTML

01/12/2019

Valoración: 4.24 (6737 votos)

En el mundo del desarrollo web, la capacidad de manipular elementos de una página de forma dinámica es una habilidad fundamental. Una de las interacciones más visuales y comunes es cambiar las propiedades de estilo de un elemento, como su color de fondo. JavaScript nos proporciona las herramientas necesarias para escuchar las acciones del usuario y responder modificando el Document Object Model (DOM) en tiempo real. Esto no solo mejora la estética de un sitio, sino que también enriquece la experiencia del usuario, haciéndola más interactiva y receptiva.

¿Cómo cambio la consola a color?
Para cambiar la consola a color, gire la primera codificador para desplazarse entre las escenas disponibles en la lista de escenas, que se muestra en el lado izquierdo de la pantalla a color.

En este artículo, exploraremos en profundidad cómo puedes cambiar el color de fondo de elementos HTML utilizando JavaScript. Abordaremos dos de los métodos más comunes y fundamentales para seleccionar elementos: a través de su identificador único (ID) y a través de su clase. Veremos ejemplos prácticos, compararemos ambos enfoques y te daremos el conocimiento necesario para que puedas implementar esta funcionalidad en tus propios proyectos.

Índice de Contenido

Preparando el Terreno: Nuestro HTML y CSS Base

Antes de sumergirnos en el código JavaScript, necesitamos una estructura básica sobre la cual trabajar. Crearemos un archivo HTML simple que contendrá varios cuadros (elementos `

`) y un selector de color (``). Este será nuestro lienzo y nuestra paleta de herramientas.

Estructura HTML

Nuestra estructura consistirá en un contenedor principal para los cuadros y otro para el control de selección de color. Cada cuadro tendrá un identificador (ID) y una clase para que podamos experimentar con ambos métodos de selección.

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Cambiar Color con JS</title> <!-- Enlace a la hoja de estilos CSS --> </head> <body> <h2>Selector de Elementos</h2> <p>Haz clic en un cuadro para seleccionarlo y luego elige un color.</p> <div class="contenedor"> <div id="cuadro-1" class="caja derecha"></div> <div id="cuadro-2" class="caja centro"></div> <div id="cuadro-3" class="caja izquierda"></div> </div> <div class="controles"> <label for="selectorColor">Seleccione un color:</label> <input type="color" id="selectorColor" value="#ff0000"> </div> <!-- Aquí irá nuestro script de JavaScript --> </body> </html>

Estilos CSS para una Mejor Visualización

Para que nuestros elementos sean visibles y tengan una apariencia ordenada, aplicaremos algunos estilos CSS básicos. Esto definirá el tamaño, borde, color inicial y disposición de nuestros cuadros.

body { font-family: Arial, sans-serif; padding: 20px; } .contenedor { overflow: hidden; border: 2px solid #333; margin-bottom: 20px; padding: 10px; background-color: #f0f0f0; } .caja { width: 120px; height: 120px; background-color: #7F0C29; border: 4px solid #CCC114; float: left; margin: 5px; cursor: pointer; transition: transform 0.2s ease-in-out; } .caja:hover { transform: scale(1.05); } .controles { border: 2px solid #333; padding: 15px; background-color: #f0f0f0; } label { font-weight: bold; margin-right: 10px; }

Método 1: Cambiar Color Usando el ID del Elemento

El atributo `id` debe ser único dentro de un documento HTML. Esto lo convierte en el selector perfecto cuando queremos manipular un elemento específico y solo uno. El método de JavaScript para esta tarea es `getElementById()`.

El plan es el siguiente:

  1. Crear una variable para almacenar la referencia al elemento que está actualmente seleccionado por el usuario.
  2. Asignar un evento `onclick` a cada cuadro para que, al hacer clic, se actualice nuestra variable de elemento seleccionado.
  3. Obtener la referencia al selector de color.
  4. Crear un evento `onchange` para el selector de color. Cuando el color cambie, aplicaremos el nuevo valor a la propiedad `backgroundColor` del elemento seleccionado.

Implementación en JavaScript

Añadiremos los eventos `onclick` directamente en nuestro HTML para llamar a una función que se encargará de actualizar nuestra selección.

<!-- Modificamos los divs en el HTML --> <div id="cuadro-1" class="caja derecha" onclick="seleccionarElemento('cuadro-1')"></div> <div id="cuadro-2" class="caja centro" onclick="seleccionarElemento('cuadro-2')"></div> <div id="cuadro-3" class="caja izquierda" onclick="seleccionarElemento('cuadro-3')"></div>

Y ahora, el script que da vida a la funcionalidad:

<script> // 1. Inicializamos la variable con el primer cuadro por defecto. let elementoSeleccionado = document.getElementById("cuadro-1"); // 2. Obtenemos la referencia al selector de color. const selectorColor = document.getElementById("selectorColor"); // 3. Creamos el evento para detectar cambios en el color. selectorColor.onchange = function() { // Cambiamos el estilo del elemento seleccionado. elementoSeleccionado.style.backgroundColor = selectorColor.value; } // 4. Función para actualizar el elemento seleccionado. function seleccionarElemento(id) { elementoSeleccionado = document.getElementById(id); console.log("Elemento seleccionado:", id); } </script>

Con este código, al hacer clic en cualquier cuadro, la variable `elementoSeleccionado` se actualiza para apuntar a ese `div`. Luego, cualquier cambio en el selector de color se reflejará instantáneamente en el fondo del último cuadro en el que se hizo clic. La propiedad `style` nos da acceso a todas las propiedades CSS en línea de un elemento, permitiéndonos modificarlas sobre la marcha.

Método 2: Cambiar Color Usando la Clase del Elemento

A diferencia de los IDs, una misma clase puede ser asignada a múltiples elementos. Esto es útil cuando queremos aplicar un comportamiento o estilo a un grupo de ellos. Para seleccionar elementos por su clase, usamos el método `getElementsByClassName()`.

Una diferencia crucial es que `getElementById()` devuelve un único objeto de elemento, mientras que `getElementsByClassName()` devuelve una `HTMLCollection`, que es una lista o un arreglo de todos los elementos que coinciden con esa clase. Esto cambia la forma en que interactuamos con el resultado.

¿Cómo cambiar el color de una variable?
1. Crear una variable que represente el elemento al que cambiaremos el color, inicialmente usaremos cualquiera de los id para iniciar la variable. 2. Definir una variable que almacene el elemento selector de color (input tipo color). 3.

Modificando un Grupo Completo de Elementos

Supongamos que queremos cambiar el color de todos los elementos que comparten una clase específica al mismo tiempo. Para ello, debemos recorrer la `HTMLCollection` y aplicar el cambio a cada elemento individualmente.

Primero, modifiquemos nuestro HTML para tener varios elementos con la misma clase que queremos seleccionar.

<!-- Nuevo contenedor en el HTML con elementos que comparten la clase 'objetivo' --> <h2>Selector de Grupo por Clase</h2> <div class="contenedor"> <div class="caja objetivo"></div> <div class="caja"></div> <!-- Este no cambiará --> <div class="caja objetivo"></div> </div>

Ahora, el JavaScript se ajusta para trabajar con un arreglo de elementos.

<script> // Seleccionamos TODOS los elementos con la clase 'objetivo' const elementosObjetivo = document.getElementsByClassName("objetivo"); // Obtenemos la referencia al selector de color (podemos reusar la variable si está en el mismo script) const selectorColorGrupo = document.getElementById("selectorColor"); // Asumimos un segundo selector o reusamos el primero selectorColorGrupo.onchange = function() { const nuevoColor = selectorColorGrupo.value; // Recorremos la colección de elementos for (let i = 0; i < elementosObjetivo.length; i++) { // Aplicamos el color a cada elemento del grupo elementosObjetivo[i].style.backgroundColor = nuevoColor; } } </script>

Este enfoque es increíblemente poderoso para aplicar cambios en lote, como resaltar todos los productos en oferta en una tienda en línea o cambiar el tema de una página completa.

Tabla Comparativa: `getElementById` vs. `getElementsByClassName`

CaracterísticagetElementByIdgetElementsByClassName
SelectorAtributo `id` del elemento.Atributo `class` del elemento.
Valor de RetornoUn único objeto de elemento (o `null` si no se encuentra).Una `HTMLCollection` (un objeto similar a un arreglo) con todos los elementos coincidentes.
UnicidadEl ID debe ser único en toda la página.La misma clase puede ser usada por múltiples elementos.
Uso TípicoManipular un componente específico y único (ej. un formulario, un header).Aplicar estilos o comportamientos a un grupo de elementos (ej. botones, tarjetas de producto).

Alternativas Modernas: `querySelector` y `querySelectorAll`

Es importante mencionar que JavaScript moderno ofrece métodos aún más versátiles: `querySelector()` y `querySelectorAll()`. Estos métodos permiten seleccionar elementos utilizando cualquier selector de CSS, lo que los hace extremadamente flexibles.

  • `document.querySelector('.caja')`: Devuelve el primer elemento que coincida con el selector CSS. Es como una combinación de `getElementById` y `getElementsByClassName` pero mucho más potente.
  • `document.querySelectorAll('.caja')`: Devuelve una `NodeList` (similar a una `HTMLCollection`) con todos los elementos que coincidan con el selector CSS.

Estos métodos son a menudo la opción preferida en el desarrollo moderno debido a su flexibilidad, ya que puedes seleccionar elementos por ID (`#miId`), clase (`.miClase`), atributo (`[type="color"]`) o combinaciones complejas (`div.contenedor .caja`).

Preguntas Frecuentes (FAQ)

¿Puedo cambiar otras propiedades CSS además del color de fondo?

¡Absolutamente! Puedes cambiar casi cualquier propiedad CSS a través del objeto `style`. Por ejemplo, para cambiar el color del texto usarías `elemento.style.color`, para el tamaño de la fuente `elemento.style.fontSize` (nota el uso de camelCase para propiedades de dos palabras como `font-size`), o para el borde `elemento.style.border`.

¿Por qué mi script no funciona si lo coloco en el `` del HTML?

Si tu script intenta acceder a elementos del DOM (como `getElementById`) antes de que el navegador los haya cargado y renderizado, no los encontrará y te dará un error (generalmente `null`). Por eso, es una práctica común colocar las etiquetas `

Si quieres conocer otros artículos parecidos a JavaScript: Cambia el color de elementos HTML puedes visitar la categoría Juegos.

Subir