2009-06-11 4 views
20

Necesito establecer un estilo arbitrario en un tramo a través de javascript.configuración de una cadena de estilo completa a un elemento de javascript (no parámetros de estilo individuales)

Sé que puedo hacer cosas como: span.style.height = "250px"; pero tengo que ser capaz de insertar una definición aleatoria estilo lleno de una plantilla

por ejemplo

float:left; 
text-decoration:underline; 
cursor:pointer; 
color:blue; 

¿Hay una manera de hacerlo en Javascript? Algo así como element.style = "all style definition here"; ?

+0

Comentario: debe ser un código independiente. No jQuery u otras bibliotecas ... – Nir

+0

¿Es posible averiguar cómo lo hace jQuery? Está escrito completamente en js, así que tiene que estar allí. – Martijn

Respuesta

36

¿Qué tal la propiedad .style.cssText? Here's Microsoft's explanation.

Throw que los estilos que desee aplicar esta manera:

document.getElementById('myEl').style.cssText = 'float:left;margin-top:75px;'; 

En cuanto a soporte de los navegadores, aunque era IE-propietaria creo que es bien soportado (obras en el IES, FF3, y Safari 3.2 WIN al menos).

+2

Debe ser 'document.getElementById ('myEl'). Style.cssText = 'float: left; margin-top: 75px;';', porque 'cssText' es una cadena, no una función. – panzi

+0

Buena captura. ¡Debería haber sido una cadena durante los últimos 3 años! :-) – ajm

+1

FYI: Aquí está la [información de Quirksmode en '.cssText'] (http://www.quirksmode.org/dom/w3c_css.html#t30) – Campbeln

2

Hay element.setAttribute('style', '...');, pero falla en IE.

Hay a solution, pero no lo he intentado.

8

Si usted quiere que sea ligero, crear una función como:

function setStyles(element, styles) 
{ 
    for(var s in styles) { 
     element.style[s] = styles[s]; 
    } 
} 

allí tendría que pasar los estilos de como un objeto literal:

setStyles(element, {float: "left", 
        textDecoration: "underline", 
        cursor: "pointer", 
        color: "blue"}); 

Tenga en cuenta que las referencias del estilo pasaron debe seguir el nombre desde el punto de vista de JavaScript, ya que la función simplemente cambia los estilos al acceder al objeto style del elemento a través de JavaScript.

Si debe tomar su entrada de estilo de una cadena, puede analizarla fácilmente y crear el objeto literal.

Cuestiones relacionadas