Answers:
几乎是正确的。
由于-
是JavaScript运算符,因此您实际上不能在属性名称中使用它。如果您正在设置,border
或者类似的单字形式,那么您的代码就可以正常工作。
但是,您需要记住的内容padding-top
以及任何带连字符的属性名称,是在javascript中,您删除了连字符,并使下一个字母变为大写,因此应为paddingTop
。
还有其他一些例外。JavaScript有一些保留字,因此float
,例如,您不能这样设置。相反,在某些浏览器中需要使用,cssFloat
而在其他浏览器中则需要使用styleFloat
。对于这样的差异,建议您使用诸如jQuery之类的框架,该框架可以为您处理浏览器的不兼容性。
除其他答案外,如果要对样式属性使用破折号,则还可以使用:
document.getElementById("xyz").style["padding-top"] = "10px";
document.getElementById("xyz").style["paddingTop"] = '10px'
。
还有一个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');
假设您有这样的HTML:
<div id='thediv'></div>
如果要修改此div的style属性,请使用
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
。
我建议使用一个函数来处理此问题,该函数接受元素id和一个包含CSS属性的对象。这样,您可以一次编写多种样式并使用标准CSS属性语法。
//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');
也会做的工作。