我有一个用于
的样式表。现在我想使用JavaScript动态修改
的一个属性。
我该如何做到这一点?
document.getElementById("xyz").style.padding-top = "10px";
这个正确吗?
我有一个用于
我该如何做到这一点?
document.getElementById("xyz").style.padding-top = "10px";
这个正确吗?
document.getElementById("xyz").style["padding-top"] = "10px";
[2023年编辑] 这是一个非常老的回答。对于可能感兴趣的人:我创建了一个小型库,可以动态更改样式 @Github。
这几乎是正确的。
-
是JavaScript运算符,所以在属性名中不能使用它。如果你设置类似border
或者其他单词的属性,你的代码会工作得很好。
然而,对于像padding-top
这样有连字符的属性名称,你需要记住在JavaScript中,需要将连字符删除,并将下一个字母大写,所以在你的情况下应该使用paddingTop
。
还有一些例外情况。JavaScript有一些保留字,因此你不能像那样设置float
。相反,在某些浏览器中,你需要使用cssFloat
,而在其他浏览器中则需要使用styleFloat
。正是因为这种差异,建议您使用像jQuery这样的框架,以处理浏览器不兼容性...
还有style.setProperty
函数:
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');
我用以下方法解决了类似的问题:
document.getElementById("xyz").style.padding = "10px 0 0 0";
希望能对您有所帮助。
0
。有时候你并不想要这样。 - Gustavo Straube<div id='thediv'></div>
document.getElementById('thediv').style[ATTRIBUTE] = '[VALUE]'
将[ATTRIBUTE]
替换为您想要的样式属性。记得删除“-”并使后面的字母大写。
示例
document.getElementById('thediv').style.display = 'none'; //changes the display
document.getElementById('thediv').style.paddingLeft = 'none'; //removes padding
float
。 - Gustavo Straube惊讶于我没有看到以下的查询选择器方式解决方案:
document.querySelector('#xyz').style.paddingTop = "10px"
document.getElementById('xyz').style.paddingTop = "10px";
//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'});
var xyzStyles = {'padding-top':'10px'}
setStyle('xyz', xyzStyles);
document.getElementById("xyz").setAttribute('style','padding-top:10px');
也可以胜任这份工作。
document.getElementById("xyz").style.padding-top = '10px';
将会是
document.getElementById("xyz").style["paddingTop"] = '10px';
document.getElementById('id').style = 'left: 55%; z-index: 999; overflow: hidden; width: 0px; height: 0px; opacity: 0; display: none;';
document.getElementById("xyz").style["paddingTop"] = '10px'
。 - Toothbrush