如何使用Javascript添加CSS规则(如强{颜色:红色})?


当前回答

您可以逐个元素添加类或样式属性。

例如:

<a name="myelement" onclick="this.style.color='#FF0';">text</a>

你可以这样做。背景,this.style。字体大小等。你也可以使用同样的方法应用一个样式

this.className='classname';

如果你想在javascript函数中做到这一点,你可以使用getElementByID而不是'this'。

其他回答

我总是忘记如何添加一个类的HTML元素,这个SO出现在谷歌早期,但没有人添加这样做的现代方式,所以在这里。

要添加一个CSS样式,你可以选择元素并调用.classList.add(<className>)

例如: document.querySelector .classList.add(“#主要”)(“bg-primary”);

你可能还需要删除其他与你所添加的类冲突的类。 document.querySelector .classList.remove(“#主要”)(“bg-secondary”);

就是这样。运行示例,您将看到setInterval()方法每3秒添加&删除一次样式。

let useSecondary = false; setInterval(changeBgColor, 3000); function changeBgColor(){ if (useSecondary){ document.querySelector("#main").classList.remove("bg-primary"); document.querySelector("#main").classList.add("bg-secondary"); } else{ document.querySelector("#main").classList.remove("bg-secondary"); document.querySelector("#main").classList.add("bg-primary"); } useSecondary = !useSecondary; } * { transition: all 0.5s ease-in-out; } .bg-primary { background-color: green; } .bg-secondary{ background-color: yellow; } <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body> <div > <div id="main" > Example text has background color changed every 3 seconds by adding / removing CSS styles. </div> </div> </body> </html>

如果你知道页面中至少存在一个<style>标签,使用这个函数:

CSS=function(i){document.getElementsByTagName('style')[0].innerHTML+=i};

用法:

CSS("div{background:#00F}");

本·布兰克(Ben Blank)的解决方案在IE8中不适合我。

然而,这在IE8中是有效的

function addCss(cssCode) {
var styleElement = document.createElement("style");
  styleElement.type = "text/css";
  if (styleElement.styleSheet) {
    styleElement.styleSheet.cssText = cssCode;
  } else {
    styleElement.appendChild(document.createTextNode(cssCode));
  }
  document.getElementsByTagName("head")[0].appendChild(styleElement);
}

另一种选择是使用JQuery存储元素的内联样式属性,然后附加到它,然后用新值更新元素的样式属性。如下:

function appendCSSToElement(element, CssProperties)
        {
            var existingCSS = $(element).attr("style");

             if(existingCSS == undefined) existingCSS = "";

            $.each(CssProperties, function(key,value)
            {
                existingCSS += " " + key + ": " + value + ";";
            });

            $(element).attr("style", existingCSS);

            return $(element);
        }

然后用新的CSS属性作为对象执行它。

appendCSSToElement("#ElementID", { "color": "white", "background-color": "green", "font-weight": "bold" });

这可能不是最有效的方法(我愿意接受关于如何改进这一点的建议。:)),但它绝对有效。

您可以逐个元素添加类或样式属性。

例如:

<a name="myelement" onclick="this.style.color='#FF0';">text</a>

你可以这样做。背景,this.style。字体大小等。你也可以使用同样的方法应用一个样式

this.className='classname';

如果你想在javascript函数中做到这一点,你可以使用getElementByID而不是'this'。