【发布时间】:2013-09-16 02:04:08
【问题描述】:
我试图了解样式标签在与 innerHTML 一起使用时的行为。
我做了 3 个实验:
样式与现有规则,innerHTML 插入其他选择器规则
结果:两条规则都适用。演示:http://jsfiddle.net/Tcy3B/
样式与现有规则,innerHTML 插入相同的选择器规则
结果:新规则被忽略。演示:http://jsfiddle.net/Tcy3B/1/
空样式,innerHTML插入一个规则,然后另一个innerHTML插入另一个规则
结果:第二条规则覆盖第一条。演示:http://jsfiddle.net/Tcy3B/2/
谁能解释一下逻辑?这在我看来完全是随机的,有时第二个规则会添加到第一个规则中,有时会被忽略,有时会覆盖第一个规则。
背景:想法是构建依赖 css 而不是 JavaScript 的动态 UI,如 full text search example 所示。
例如,这里是第二个demo的代码:
html:
<style type="text/css">
.red {color:red;}
</style>
<div class="red">red</div>
<div class="blue">blue</div>
JavaScript:
var st=document.getElementsByTagName("style")[0];
st.innerHTML=".red {color:blue;}";
【问题讨论】:
-
好问题。我也想知道同样的事情。
-
@Asad 好吧,我的错误也是 :-( 这只是一个 jsfiddle 行为,如果我给样式表一个 id,那么一切都会按预期工作,innerHTML 会覆盖以前的规则。投票结束此事.
-
@Christophe 是的,这是真的。您可能应该将其发布为答案,因为它解释了正在发生的事情。
标签: javascript css styles innerhtml