JavaScript更改CSS属性

时间:2015-07-06 03:39:55

标签: javascript css stylesheet

这组代码工作正常,但我想知道我们是否可以使用变量来存储样式表的属性,如字母间距,颜色等...



function movespacing() {
  document.styleSheets[0].cssRules[0].style.color = 'black';
}

h2 {
  color: blue;
}

<h2>letter-spacing: -5px</h2>
<input type="button" value="click to see animation" onclick="movespacing();" />
&#13;
&#13;
&#13;

如您所知,一旦您点击按钮,该字词的颜色就会出现字母间距&#39;将从以前的颜色变为黑色。 现在,我确实尝试将css属性存储到某个变量中,如

var cssColor = document.styleSheets.cssRules[0].style.color;

...然后

cssColor = "green";

它没有用..请告诉我原因

还有一个css属性,比如字母间距,我也尝试了但是,控制台给了我一个关于无效左手值赋值的错误:

document.styleSheets[0].cssRules[0].style.letter-spacing = '5px';

1 个答案:

答案 0 :(得分:0)

除特殊情况外,您不需要也不应该通过更改样式表来操作样式。我不知道document.styleSheets[0].cssRules[0]指向哪个规则(并且它可能会根据您加载的样式表及其中的规则顺序而改变),但是如果您想要更改h2的颜色对于黑色,正常的做法是CSS如下。

<h2 id="h2">
.black { color: black; }
document.getElementById('h2') . classList . add('black');

根据您的浏览器或您是否使用jQuery,有不同的方法来添加类。例如,您可以在jQuery中使用$('#h2').addClass('black')

要更改颜色,而不是记住样式表中的旧值,并更改样式表,只需删除'black'类。

还有其他一些事情你做错了:

  1. 要从style对象访问属性,您需要使用camelcased名称,如style.letterSpacing中所示。您的方法(style.letter-spacing)会导致语法错误(连字符-将被解释为减号)。

  2. 您无法通过将对象的属性分配给变量(var cssColor = ...),然后更改该变量的值来更改对象的属性。为了过分简化,JavaScript变量不是&#34;指针&#34;,至少不是你想要的方式。