日期:2014-05-16  浏览次数:20397 次

不为人知的JS调用样式的方法---document.createElement().addRule(..)

原文:http://www.10000it.net/javascript/20090808/731.html

很多人可能在调用css样式都是使用传统的方式调用其实有很多方法可以进行调用,如使用内嵌样式,在html直接加入样式,给定外部样式文件,在外部样式文件中使用 @import

url(样式文件路径),这些都是大家常用的,其实还有就是使用javascript进行样式的定义。

第一种:

var style = document.createElement(’link’);
style.href = ’style.css’;
style.rel = ’stylesheet’;
style.type = ‘text/css’;
document.getElementsByTagName(’HEAD’).item(0).appendChild(style);

第二种简单:

document.createStyleSheet(style.css);

动态的 style 节点,使用程序生成的字符串:

var style = document.createElement(’style’);
style.type = ‘text/css’;
style.innerHTML=”body{ background-color:blue; }”;
document.getElementsByTagName(’HEAD’).item(0).appendChild(style);

但是在上面只能在Firefox兼容,在IE里却不支持。

var sheet = document.createStyleSheet();
sheet.addRule(’body’,'background-color:red’);

如果按照上面的话就能成功,但是很麻烦,要把字符串拆开写。

我一直在搜索着用javascript定义样式的代码,终于找到了,代码如下。

document.createStyleSheet(”javascript:’body{background-color:blue;’”);

但用上面的javascript代码唯一的缺点就是url 最大 255 个字符,长一点的就不行了,经过 SXPCrazy 提示,将代码进行修改成如下:

window.style=”body{background-color:blue;”;
document.createStyleSheet(”javascript:style”);

完美解决!!代码:

<script>
function blue(){
if(document.all){
window.style="body{background-color:blue;";
document.createStyleSheet("javascript:style");
}else{
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML="body{ background-color:blue }";
document.getElementsByTagName('HEAD').item(0).appendChild(style);
}
}
</script>

以上是完整代码!
本文关键字 javascript,网页设计,javascript调用样式,疯狂IT

不为人知的JS调用样式的方法---document.createElement().addRule(..)??

?

?

分析代码时,发现自己的盲点——document.createElement(),冲浪一番,总结了点经验。

?

????? document.createElement()是在对象中创建一个对象,要与appendChild() 或 insertBefore()方法联合使用。其中,appendChild() 方法在节点的子节点列表末添加新的子节点。insertBefore() 方法在节点的子节点列表任意位置插入新的节点。

?

??????下面,举例说明document.createElement()的用法。<div id="board"></div>

例1:

??????? <script type="text/javascript">
??????????? var board = document.getElementById("board");
??????????? var e = document.createElement("input");
??????????? e.type = "button";
??????????? e.value = "这是测试加载的小例子";
??????????? var object = board.appendChild(e);
??????? </script>

效果:在标签board中加载一个按钮,属性值为“这是测试加载的小例子”。?

???????

例2:

??????? <script type="text/javascript">
??????????? var board = document.getElementById("board");
??????????? var e2 = document.createElement("select");
??????????? e2.options[0] = new Option("加载项1", "");
??????????? e2.options[1] = new Option("加载项2", "");
??????????? e2.size = "2";
??????????? var object = board.appendChild(e2);
??????? </script>

效果:在标签board中加载一个下拉列表框,属性值为“加载项1”和“加载项2”。?

????????

例3:

??????? <script type="text/javascript">
??????????? var board = document.getElementById("board");???????????
??????????? var e3 = document.createElement("input");
??????????? e4.setAttribute("type", "text");
??????????? e4.setAttribute("name", "q");
????????????e4.setAttribute("value", "使用setAttribute");
??????????? e4.setAttribute("onclick", "javascript:alert('This is a test!');");???????????
??????????? var object = board.appendChild(e3);
??????? </script>

效果:在标签board中加载一个文本框,属性值为“使用setAttribute”。?当点击这个文本框时,会弹出对话框“This is a test!”。

?

??????? 根据上面例子,可以看出,可以通过加载对象的属性来设置,参数是相同的。使