以这种方式访问​​<style>和<script>元素是否可以?</style>

时间:2011-11-06 21:11:54

标签: javascript css

这是一个很好的CSS练习吗?

<style id="magic"> - 所以我可以,如果我想 - 使用JavaScript添加CSS propreties(意思是:从JavaScript编辑<style>元素)来影响文档中的元素而不让我让脚本通过每个匹配的元素。

<script style="display: block; white-space: pre;">这样我就可以在博客文章中共享脚本和演示文稿,而不会被迫为博客文章编写一个版本,而另一个版本则用于演示。

(这只是假设)

1 个答案:

答案 0 :(得分:3)

在您的第一种情况下(使用Javascript修改<style>元素中的样式定义),您可能会发现一些道路颠簸:

  1. 不同的浏览器以不同的方式应对此问题。在IE(至少是旧版本)中,您必须修改样式元素的.styleSheet.cssText属性,而在其他浏览器中,您只需要将文本节点作为子元素添加到它(注意,它可能是.innerHTML普遍适用;我从未使用过。)
  2. 添加新样式规则比替换现有规则更容易,尤其是当您将规则视为文本时。
  3. 浏览器(可能)对每页的样式规则数量有限制。虽然这将是成千上万,但如果你在一个循环中设置样式规则(没有以某种方式清除旧的规则),你可能会达到极限。
  4. 除此之外,去吧。它可能是设置内联样式的一个很好的替代方案。


    在你的第二个案例中,我很抱歉,但这是不可能的(如果是的话,绝对不推荐)。您不能使用CSS将<script>元素的文本内容显示为文本,也不能将其作为Javascript执行。首先,HTML解析器在解析<script>元素的内容时切换到不同的模式。

    在演示中显示Javascript源代码的首选方法是使用单独的,易于显示的代码版本(例如,在<pre>元素中)。