En la anterior entrada sobre Javascript (getAttribute y setAttribute) dije que iba a dejar cómo editar el atributo style con Javascript para otra entrada porque era más complicado de lo normal.

El caso es que en Javascript, para editar ese atributo tenemos que editar el objeto style del elemento. Y cómo se hace?. A priori no es muy difícil:

var elemento = document.getElementById('ejemplo'); // Seleccionar el elemento
elemento.style.color = "red"; // Hacer que su color sea rojo.

Los guiones

Pero, ¿y si queremos editar la propiedad background-image? (o cualquier otra con guiones). Probemos:

elemento.style.background-image = "url(foo.png)";

Como os habréis imaginado, esto no funcionará. ¿Debemos probar entonces con la notación alternativa del objeto?

elemento.style['background-image'] = "url(foo.png)";

Tampoco funcionará. Entonces, ¿cómo accedemos a las propiedades que tienen guion?.

Pues resulta que para acceder a esas propiedades hay que hacerlo de otra manera, usando una forma de escribir que los angloparlantes llaman camelCase.

El método, para entenderlo, es fácil: Se eliminan todos los guiones, y la letra siguiente va en mayúscula

Así, esto sí funcionará:

elemento.style.backgroundImage = "url(foo.png)";

Pero, ¿y los prefijos?

La forma para editar las propiedades con prefijos es idéntica: Reemplazar guiones y poner la siguiente en mayúscula. Así, -moz-box-shadow se convertirá en MozBoxShadow

La excepción: Microsoft

Con esto de los prefijos a los de Microsoft se les pasó poner la primera mayúscula, así que, por ejemplo: -ms-transform se convierte en msTransform (y no en MsTransform como debería).

La otra excepción: los floats

Hay una última excepción con este objeto: la propiedad float. La palabra float es una palabra reservada en la mayoría de lenguajes de programación. Representa un número con decimales. Por lo tanto, no podemos hacer:

elemento.style.float = "right"

Los navegadores que respetan los estándares han usado el nombre cssFloat, mientras que las versiones antiguas de Internet Explorer usan styleFloat.
Así, para hacer que nuestro elemento flote a la izquierda:

elemento.style.cssFloat = elemento.style.styleFloat = "left";