En la guía paso a paso anterior, les mostré cómo establecer estilos en JavaScript, como éste.
Ahora, si estableces muchos estilos en JavaScript, podrías terminar
con cientos de líneas de código sólo para establecer valores de propiedades de CSS.
Y eso realmente podría estorbar tu JavaScript.
Hay otra manera de hacer esto.
Podemos crear una clase de CSS,
y añadir una regla de CSS para esa clase con los nuevos estilos que deseamos,
y luego dinámicamente añadir ese nombre de clase en JavaScript.
Vamos a probar esto empezando aquí en la etiqueta "".
Vamos a hacer una clase ".catcolors", y una regla para esta clase.
Y va a tener "color: orange;", y "background-color: black;".
Ahora, para asignar esto al elemento "heading", podemos decir:
'headingEl.className = "catcolors";'
Y podemos borrar la asignación de color
y de color de fondo en JavaScript.
¡Tan tan!
Esto funciona.
Ahora, ¿notaron algo raro?
El atributo de HTML para nombres de clases es justamente "class".
Si hubiera hecho esto en HTML, esto sería 'class="catcolors"'.
Pero cuando lo hago en JavaScript, tengo que escribir ".className",
que no estamos acostumbrados a usar.
Y eso es porque "class" es en realidad un palabra clave en el lenguaje JavaScript
que tiene un significado especial para el lenguaje.
Así que por eso los navegadores usan "className" para referirse
al atributo "class" de HTML, sólo para asegurarse de no entrar en confusiones.
Así que recuerda, si quieres establecer el atributo clase para un elemento,
debes escribir: punto "className" igual (.className=).
Ahora para asignar eso a cada uno de los nombres de los animales,
podemos ponerlo dentro del ciclo, entonces:
'nameEls[i].className = "catcolors";'
Eso va a añadir el nombre de clase, pero en realidad va a quitar cualquier clase
que estuviera allí antes, porque lo hicimos "igual a".
Así que si teníamos ahí alguna clase antes, ahora ya no está.
Ahora, antes había clases, aquí tenemos 'class="animal"'.
Y ahora se han convertido en "catcolors".
Entonces lo que realmente queremos hacer es añadir un nuevo nombre de clase a este atributo de clase.
Y podemos hacer eso escribiendo "+= catcolors".
Muy bien.
Es seguro hacer esto, porque tomará la clase,
y a cualquier cosa que tenía antes le va a añadir un espacio y va a añadir la nueva clase.
Hay otra manera de hacer esto en los navegadores nuevos,
usando la propiedad "classList".
Para hacer esto escribimos: 'nameEls[i].classList.add("catcolors");'.
Ahora, eso es mejor, pero no funciona en todos lados.
Así que si quieres usar eso, tienes que ir a "caniuse.com",
y asegurarte de que funcione en todos los navegadores
en los que quieres que funcione tu página web.
Es mucho más bonito, pero no es agradable que tu página web falle
porque estás usando una función que el navegador no puede soportar.
Así que yo lo voy a comentar,
porque quiero que mi página funcione en muchos navegadores.
Hay muchas veces en las que queremos cambiar estilos individuales,
en lugar de asignarles nombres de clases.
Así que una vez más, sólo recuerda que tienes ambas herramientas en tu caja de herramientas,
y piensa cuál será mejor usar, dependiendo de la situación.