原文: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!”。
?
??????? 根据上面例子,可以看出,可以通过加载对象的属性来设置,参数是相同的。使