js调用外部CSS 80
我想通过JS中的alert(document.getElementById("d1").style.width);输出属性值,但是都为空。。如果把样式内嵌到标记里就可以了...
我想通过JS中的alert(document.getElementById("d1").style.width);输出属性值,但是都为空。。如果把样式内嵌到标记里就可以了。这是为什么呢?
怎样调用外部CSS文件里的属性? 展开
怎样调用外部CSS文件里的属性? 展开
4个回答
展开全部
obj.style方法,这个方法只能JS只能获取写在html标签中的写在style属性中的值(style="..."),看一下代码
XML/HTML代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JS获取CSS属性值</title>
<style type="text/css">
<!--
.ss{color:#cdcdcd;}
-->
</style>
</head>
<body>
<div id="css88" class="ss" style="width:200px; height:200px; background:#333333">JS获取CSS属性值</div>
<script type="text/javascript">
alert(document.getElementById("css88").style.width);//200px
alert(document.getElementById("css88").style.color);//空白
</script>
</body>
</html>
上面这个例子对id为"css88"的div设置了2种烦事的样式,包括style和外部样式class。
从alert出来的信息可以看到,document.getElementById("css88").style方法获取不到class为ss的属性和值。
那么这么样才能获取到class为ss的属性和值呢?
IE中使用的是obj.currentStyle方法,而FF是用的是getComputedStyle 方法。
网上一个比较方法是:
XML/HTML代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>S获取CSS属性值</title>
<style type="text/css">
<!--
.ss{background:blue; color:#cdcdcd; width:200px}
-->
</style>
</head>
<body>
<p id="qq" class="ss" >sdf</p>
<script type="text/javascript">
function GetCurrentStyle (obj, prop) {
if (obj.currentStyle) {
return obj.currentStyle[prop];
}
else if (window.getComputedStyle) {
propprop = prop.replace (/([A-Z])/g, "-$1");
propprop = prop.toLowerCase ();
return document.defaultView.getComputedStyle (obj,null)[prop];
}
return null;
}
var dd=document.getElementById("qq");
alert(GetCurrentStyle(dd,"width"));
</script>
</body>
</html>
当然,如果您是引用外部的css文件同样适用。
另:可以将上面的方法简化为
JavaScript代码
function getDefaultStyle(obj,attribute){ // 返回最终样式函数,兼容IE和DOM,设置参数:元素对象、样式特性
return obj.currentStyle?obj.currentStyle[attribute]:document.defaultView.getComputedStyle(obj,false)[attribute];
}
//调用外包css 文件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<link rel="stylesheet" type="text/css" href="abc.css" />
<TITLE> New Document </TITLE>
<script>
window.onload=fnInit;
function fnInit(){
// 访问 styleSheet 中的一条规则, 将其 backgroundColor 改为蓝色。
var oStyleSheet=document.styleSheets[0];
var oRule=oStyleSheet.rules[0];
oRule.style.backgroundColor="#0000FF";
}
</script>
</HEAD>
<BODY>
<div class="class1">aaa</div>
</BODY>
</HTML>
XML/HTML代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JS获取CSS属性值</title>
<style type="text/css">
<!--
.ss{color:#cdcdcd;}
-->
</style>
</head>
<body>
<div id="css88" class="ss" style="width:200px; height:200px; background:#333333">JS获取CSS属性值</div>
<script type="text/javascript">
alert(document.getElementById("css88").style.width);//200px
alert(document.getElementById("css88").style.color);//空白
</script>
</body>
</html>
上面这个例子对id为"css88"的div设置了2种烦事的样式,包括style和外部样式class。
从alert出来的信息可以看到,document.getElementById("css88").style方法获取不到class为ss的属性和值。
那么这么样才能获取到class为ss的属性和值呢?
IE中使用的是obj.currentStyle方法,而FF是用的是getComputedStyle 方法。
网上一个比较方法是:
XML/HTML代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>S获取CSS属性值</title>
<style type="text/css">
<!--
.ss{background:blue; color:#cdcdcd; width:200px}
-->
</style>
</head>
<body>
<p id="qq" class="ss" >sdf</p>
<script type="text/javascript">
function GetCurrentStyle (obj, prop) {
if (obj.currentStyle) {
return obj.currentStyle[prop];
}
else if (window.getComputedStyle) {
propprop = prop.replace (/([A-Z])/g, "-$1");
propprop = prop.toLowerCase ();
return document.defaultView.getComputedStyle (obj,null)[prop];
}
return null;
}
var dd=document.getElementById("qq");
alert(GetCurrentStyle(dd,"width"));
</script>
</body>
</html>
当然,如果您是引用外部的css文件同样适用。
另:可以将上面的方法简化为
JavaScript代码
function getDefaultStyle(obj,attribute){ // 返回最终样式函数,兼容IE和DOM,设置参数:元素对象、样式特性
return obj.currentStyle?obj.currentStyle[attribute]:document.defaultView.getComputedStyle(obj,false)[attribute];
}
//调用外包css 文件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<link rel="stylesheet" type="text/css" href="abc.css" />
<TITLE> New Document </TITLE>
<script>
window.onload=fnInit;
function fnInit(){
// 访问 styleSheet 中的一条规则, 将其 backgroundColor 改为蓝色。
var oStyleSheet=document.styleSheets[0];
var oRule=oStyleSheet.rules[0];
oRule.style.backgroundColor="#0000FF";
}
</script>
</HEAD>
<BODY>
<div class="class1">aaa</div>
</BODY>
</HTML>
展开全部
var ocssRules=document.styleSheets[0].rules;//0代表第一个相应的CSS外部链接
var class1=ocssRules[0];//0代表 第一个相应的CSS外部链接的第一个CLASS规则。
var class1=ocssRules[0];//0代表 第一个相应的CSS外部链接的第一个CLASS规则。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
style.width是标签内的属性,你做的是得到某个属性值,就好比getElementById("d1").title得到该标签的title属性一样。
后面那个问题想了一下不太会,不知可不可以用js读取到css文件..
后面那个问题想了一下不太会,不知可不可以用js读取到css文件..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是ie类,使用.currentStyle
如果是ff类,使用.getComputedStyle
如果是ff类,使用.getComputedStyle
参考资料: http://www.jimzhan.com/archives/481
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询