<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <div id="box">我是测试内容</div> <script> var oBox = document.getElementById("box"); </script></body></html>解决办法
<script>function loadStyleString(css){var style = document.createElement("style");style.type = "text/css";try{style.appendChild(document.createTextNode(css));}catch(ex){style.styleSheet.cssText = css;}var head = document.getElementsByTagName("head")[0];head.appendChild(style);}loadStyleString("#box:before{content:"前缀";color: red;}");<script> <style>.change:before{content: "前缀";color: red;}</style> <script>oBox.className = "change";</script> [缺点]此方法无法控制伪元素里面的content属性的值<style> .change:before{content: attr(data-beforeData);color: red;}</style> <script>oBox.setAttribute("data-beforeData","前缀");</script> [注意]此方法只可用setAttribute实现,经测试用dataset方法无效<script>function insertRule(sheet,ruleKey,ruleValue,index){ return sheet.insertRule ? sheet.insertRule(ruleKey+ "{" + ruleValue + "}",index) : sheet.addRule(ruleKey,ruleValue,index); } insertRule(document.styleSheets[0],"#box:before","content:"前缀";color: red;",0)</script> <script>function loadStyleString(css){var style = document.createElement("style");style.type = "text/css";try{style.appendChild(document.createTextNode(css));}catch(ex){style.styleSheet.cssText = css;}var head = document.getElementsByTagName("head")[0];head.appendChild(style);}loadStyleString("");document.head.getElementsByTagName("style")[1].innerHTML = "#oBox:before{color: " + colorValue + ";}";</script> [注意]只能使用getElementsByTagName("style")[1]的方法,经测验使用stylesheets[1]方法无效