2011-03-04 34 views

Respuesta

93

es casi correcta.

Dado que el - es un operador de JavaScript, realmente no puede tener eso en los nombres de las propiedades. Si estuviera configurando, border o algo así, su código funcionaría bien.

Sin embargo, lo que necesita recordar para padding-top, y para cualquier nombre de atributo con guiones, es que en javascript, quite el guión y haga que la siguiente letra en mayúscula, en su caso sería paddingTop.

Existen otras excepciones. JavaScript tiene algunas palabras reservadas, por lo que no puede establecer float así, por ejemplo. En cambio, en algunos navegadores debe usar cssFloat y en otros styleFloat. Es para discrepancias como esta que se recomienda que utilice un marco como jQuery, que maneja las incompatibilidades del navegador para usted ...

9

Asumiendo que tiene HTML así:

<div id='thediv'></div> 

Si desea modificar el atributo de estilo de este div, que tendría que utilizar

document.getElementById('thediv').style.[ATTRIBUTE] = '[VALUE]' 

Reemplazar [ATTRIBUTE] con el estilo de atributos que desea. Recuerde eliminar '-' y hacer mayúscula la siguiente letra.

Ejemplos

document.getElementById('thediv').style.display = 'none'; //changes the display 
document.getElementById('thediv').style.paddingLeft = 'none'; //removes padding 
+1

Como se indica en la respuesta aceptada, hay algunas excepciones. Me gusta 'flotar '. –

162

Además de otras respuestas, si desea usar la notación del guion para las propiedades del estilo, también se puede utilizar:

document.getElementById("xyz").style["padding-top"] = "10px"; 
+5

+1 No estaba al tanto de eso. Eso es genial –

+3

Yo tampoco, esto es realmente útil para funciones dinámicas, uno puede pasar el estilo como un valor de cadena, luego establecer el estilo y el valor. Gran solución – raphie

+0

Además, añadiendo a lo que dice @raphie, también puede usar 'document.getElementById (" xyz "). Style [" paddingTop "] = '10px''. – Toothbrush

11

resuelvo un problema similar con:

document.getElementById("xyz").style.padding = "10px 0 0 0"; 

Espero que ayude.

+1

La desventaja de hacerlo de esta manera es que obtienes el relleno para otros lados establecido en '0'. Y a veces no quieres eso. –

7
document.getElementById("xyz").style.padding-top = '10px'; 

habrá

document.getElementById("xyz").style["paddingTop"] = '10px'; 
2
document.getElementById("xyz").setAttribute('style','padding-top:10px'); 

también haría el trabajo.

+3

La desventaja de hacerlo de esta manera es que eliminas cualquier otro estilo en línea. Eso es porque estás reemplazando todo el valor del atributo. Supongo que obtener el estilo actual, buscar un valor existente para la propiedad que desea establecer y luego agregar/reemplazar por el valor deseado es una mejor solución. –

+0

De acuerdo. Pero el OP necesitaba una solución más cercana a lo que ya estaba haciendo, que no tenía en cuenta su caso de uso. Esta es una de las formas más simples de lograr eso, pero seguramente no es la mejor. –

4

Recomendaría utilizar una función que acepte el elemento id y un objeto que contenga las propiedades de CSS para manejar esto. De esta forma puede escribir varios estilos a la vez y usar la sintaxis de propiedad de CSS estándar.

//function to handle multiple styles 
function setStyle(elId, propertyObject) { 
    var el = document.getElementById(elId); 
    for (var property in propertyObject) { 
     el.style[property] = propertyObject[property]; 
    } 
} 

setStyle('xyz', {'padding-top': '10px'}); 

Mejor aún podría almacenar los estilos en una variable, lo que facilitará mucho la administración de la propiedad, p.

var xyzStyles = {'padding-top':'10px'} 
setStyle('xyz', xyzStyles); 

Espero que ayude

Cuestiones relacionadas