Réponses:
C'est presque correct.
Puisque le -est un opérateur javascript, vous ne pouvez pas vraiment avoir cela dans les noms de propriété. Si vous définissiez, borderou quelque chose d'un seul mot comme ça à la place, votre code fonctionnerait très bien.
Cependant, la chose dont vous devez vous souvenir padding-top, et pour tout nom d'attribut avec trait d'union, est qu'en javascript, vous supprimez le trait d'union et mettez la lettre suivante en majuscule, donc dans votre cas, ce serait le cas paddingTop.
Il y a quelques autres exceptions. JavaScript a des mots réservés, vous ne pouvez donc pas définir floatcomme ça, par exemple. Au lieu de cela, dans certains navigateurs, vous devez utiliser cssFloatet dans d'autres styleFloat. C'est pour des écarts comme celui-ci qu'il est recommandé d'utiliser un framework tel que jQuery, qui gère les incompatibilités de navigateur à votre place ...
En plus d'autres réponses, si vous souhaitez utiliser la notation tiret pour les propriétés de style, vous pouvez également utiliser:
document.getElementById("xyz").style["padding-top"] = "10px";
document.getElementById("xyz").style["paddingTop"] = '10px'.
Je résous un problème similaire avec:
document.getElementById("xyz").style.padding = "10px 0 0 0";
J'espère que cela pourra aider.
0. Et parfois vous ne le voulez pas.
Il existe également une style.setPropertyfonction:
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');
En supposant que vous ayez du HTML comme celui-ci:
<div id='thediv'></div>
Si vous souhaitez modifier l'attribut de style de ce div, vous utiliserez
document.getElementById('thediv').style.[ATTRIBUTE] = '[VALUE]'
Remplacez [ATTRIBUTE]par l'attribut de style souhaité. N'oubliez pas de supprimer «-» et de mettre la lettre suivante en majuscule.
Exemples
document.getElementById('thediv').style.display = 'none'; //changes the display
document.getElementById('thediv').style.paddingLeft = 'none'; //removes padding
float.
Je recommanderais d'utiliser une fonction, qui accepte l'ID d'élément et un objet contenant les propriétés CSS, pour gérer cela. De cette façon, vous écrivez plusieurs styles à la fois et utilisez la syntaxe de propriété 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'});
Mieux encore, vous pouvez stocker les styles dans une variable, ce qui facilitera la gestion des propriétés, par exemple
var xyzStyles = {'padding-top':'10px'}
setStyle('xyz', xyzStyles);
J'espère que cela pourra aider
document.getElementById("xyz").setAttribute('style','padding-top:10px');
ferait également le travail.