Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用javascript等价物替换样式标记_Javascript_Html_Css - Fatal编程技术网

用javascript等价物替换样式标记

用javascript等价物替换样式标记,javascript,html,css,Javascript,Html,Css,HTML页面的头部有一个内联块,如下所示: <style type="text/css"> body {font-size: 1.2em} </style> 正文{字体大小:1.2em} 这将在加载页面时立即设置正文字体大小 我想用更具动态性但仍然在客户端的东西来代替它 我如何使用JavaScript来设置这样一种样式,在呈现页面时立即可用并可见?Body.onload太晚了。我需要一个与此样式块等效的样式块,但要使用JavaScript。这个怎么样。我想你不能

HTML页面的头部有一个内联块,如下所示:

<style type="text/css">
  body {font-size: 1.2em}
</style>

正文{字体大小:1.2em}
这将在加载页面时立即设置正文字体大小

我想用更具动态性但仍然在客户端的东西来代替它


我如何使用JavaScript来设置这样一种样式,在呈现页面时立即可用并可见?Body.onload太晚了。我需要一个与此样式块等效的样式块,但要使用JavaScript。

这个怎么样。我想你不能直接插入CSS

<p id="myCSS"></p>
<script><!--
document.getElementById("myCSS").outerHTML=[
  '<style type="text/css">'
 ,'body { font-size: 1em; line-height: 1.5em }'
 ,'<\/style>'].join('\r');
-->
</script>


请注意,一些CSS设置很难恢复到原来的设置。使用css值
unset
可以做到这一点,但IE不支持它。在这种情况下,也许“尝试并出错”是最好的选择。

答案是在内联脚本块中使用document.head.innerHTML+=添加表示样式块和样式的HTML。这将在创建DOM的脚本标记之后立即添加到DOM中。对包含字体大小的HTML模板使用反勾号会使它变得更容易,尽管最后我不得不支持IE11,所以反勾号被去掉了

解决方案:

<script>
    var fontSize = //font size retrieved here;
    document.head.innerHTML += "<style type=\"text/css\"> \nbody { font-size: ".concat(fontSize, "em } \n</style>");
</script>

var fontSize=//此处检索到的字体大小;
document.head.innerHTML+=“\n正文{font size:”.concat(fontSize,“em}\n”);

定义“更动态”。您希望什么影响此大小?
用于防止JS代码被服务器过滤掉。如果他们没有,你可以删除
,我从来没有听说过服务器过滤JS代码只是因为它没有包含在HTML注释中……事实上,我遇到过一个:移动站点“pixnet.net”。我必须粘贴这段代码来定制我的手机CSS。它们清理非CDN的
以及