Risposte:
È quasi corretto.
Poiché -
è un operatore javascript, non puoi davvero averlo nei nomi delle proprietà. Se stavi impostando, border
o qualcosa di simile, invece, il tuo codice funzionerebbe perfettamente.
Tuttavia, la cosa che devi ricordare per padding-top
, e per qualsiasi nome di attributo con trattino, è che in javascript, rimuovi il trattino e rendi maiuscola la lettera successiva, quindi nel tuo caso sarebbe paddingTop
.
Ci sono altre eccezioni. JavaScript ha alcune parole riservate, quindi non puoi impostare in float
questo modo, ad esempio. Invece, in alcuni browser è necessario utilizzare cssFloat
e in altri styleFloat
. È per discrepanze come questa che si consiglia di utilizzare un framework come jQuery, che gestisce le incompatibilità del browser per te ...
Oltre ad altre risposte, se desideri utilizzare la notazione trattino per le proprietà di stile, puoi anche utilizzare:
document.getElementById("xyz").style["padding-top"] = "10px";
document.getElementById("xyz").style["paddingTop"] = '10px'
.
Risolvo un problema simile con:
document.getElementById("xyz").style.padding = "10px 0 0 0";
Spero che aiuti.
0
. E a volte non lo vuoi.
C'è anche la style.setProperty
funzione:
https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/setProperty
document.getElementById("xyz").style.setProperty('padding-top', '10px');
// version with !important priority
document.getElementById("xyz").style.setProperty('padding-top', '10px', 'important');
Supponendo che tu abbia HTML come questo:
<div id='thediv'></div>
Se vuoi modificare l'attributo di stile di questo div, dovresti usare
document.getElementById('thediv').style.[ATTRIBUTE] = '[VALUE]'
Sostituisci [ATTRIBUTE]
con l'attributo di stile che desideri. Ricorda di rimuovere "-" e di rendere maiuscola la seguente lettera.
Esempi
document.getElementById('thediv').style.display = 'none'; //changes the display
document.getElementById('thediv').style.paddingLeft = 'none'; //removes padding
float
.
Suggerirei di utilizzare una funzione, che accetta l'id dell'elemento e un oggetto contenente le proprietà CSS, per gestirlo. In questo modo puoi scrivere più stili contemporaneamente e utilizzare la sintassi delle proprietà CSS standard.
//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'});
Meglio ancora potresti memorizzare gli stili in una variabile, che renderà molto più semplice la gestione della proprietà, ad es
var xyzStyles = {'padding-top':'10px'}
setStyle('xyz', xyzStyles);
spero che aiuti
document.getElementById("xyz").setAttribute('style','padding-top:10px');
farebbe anche il lavoro.