如何使用ID选择器创建动态样式表?

时间:2011-09-09 17:37:50

标签: javascript css css-selectors

我希望能够使用以下代码:

var head = document.getElementsByTagName("head")[0];
var style = document.createElement( "style" );

style.type = "text/css";
style.media = "print";
style.styleSheet.cssText = "#menu {display:none;}";
head.appendChild( style );
window.print();

问题在于它最终具有以下风格:
UNKNOWN {display:none;}

我也尝试过使用相同结果的addRule,实际上它的错误是“无效参数”并且没有设置任何内容。

我想要完成的是动态隐藏给定页面中的某些元素以便不打印,这些元素使用不同的标签,格式和类,因此没有通用的方法来排除它们(至少我可以想一想,不使用ID选择器。

这适用于使用IE7的Intranet上的业务应用程序。

我目前唯一的解决方法是将此信息发送到ASP,然后将其作为样式表返回,以便将其用作href样式表,因为我可以想到使用ID选择器动态创建样式表。< / p>

提前致谢。

2 个答案:

答案 0 :(得分:0)

尝试:

var head = document.getElementsByTagName("head")[0];
var style = document.createElement( "style" );
style.type = "text/css";
style.media = "print";
style.text = "#menu {display:none;}";
head.appendChild( style );

答案 1 :(得分:0)

对我来说,如果您只使用.innerHTML,它就有效。我在Chrome上,看起来你在Internet Explorer上。不过,使用.innerHTML,您只需设置内容(即<style></style>之间)。

var head = document.getElementsByTagName("head")[0];
var style = document.createElement( "style" );

style.type = "text/css";
style.media = "print";
style.innerHTML = "#menu {display:none;}";
head.appendChild( style );
window.print();