buenas,
no te funciona con las demás variantes, esencialmente porque cada propiedad representa una parte distinta del API de DOM. la propiedad
style de cualquier elemento representa un objeto
CSSStyleDeclaration y ésta contiene la serie de propiedades de CSS. por contraste,
element.getAttribute
devuelve un string que
lee directamente del código html. mas o menos, lo mismo hace
element.setAttribute
, crea una entrada en el mapa de atributos del elemento. en algunos navegadores, esto suele crear algún efecto pero en otros no. en esos casos, debe ser porque setAttribute no está directamente vinculado con la parte del DOM que se ha intentado modificar.