从javascript(而不是单个样式参数)将整个样式字符串设置为元素

Nir*_*Nir 26 javascript css stylesheet

我需要通过javascript设置任意样式到跨度.

我知道我可以做这样的事情:span.style.height="250px"; 但我需要能够从模板中插入随机的完整样式定义

例如

float:left; 
text-decoration:underline; 
cursor:pointer; 
color:blue;
Run Code Online (Sandbox Code Playgroud)

有没有办法在Javascript中这样做?就像是:

element.style="all style definition here";

ajm*_*ajm 48

.style.cssText属性怎么样?这是微软的解释.

把你想要应用的样式扔给它:

document.getElementById('myEl').style.cssText = 'float:left;margin-top:75px;';
Run Code Online (Sandbox Code Playgroud)

至于浏览器支持,虽然它是IE专有的,我相信它得到了很好的支持(至少在IE,FF3和Safari 3.2 WIN中工作).

  • 仅供参考:这是[关于`.cssText`的Quirksmode信息](http://www.quirksmode.org/dom/w3c_css.html#t30) (3认同)
  • 它应该是`document.getElementById('myEl').style.cssText ='float:left; margin-top:75px;';`,因为`cssText`是一个字符串,而不是一个函数. (2认同)

Ale*_*ski 8

如果您希望它是轻量级的,请创建一个函数,例如:

function setStyles(element, styles)
{
    for(var s in styles) {
        element.style[s] = styles[s];
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你将样式作为对象文字传递:

setStyles(element, {float: "left",
                    textDecoration: "underline",
                    cursor: "pointer",
                    color: "blue"});
Run Code Online (Sandbox Code Playgroud)

请注意,传入的样式引用必须遵循JavaScript立场的命名,因为该函数只是style通过JavaScript 访问元素的对象来更改样式.

如果你必须从字符串中获取样式输入,那么你可以很容易地解析它并创建对象文字.