js调用外部CSS 80

我想通过JS中的alert(document.getElementById("d1").style.width);输出属性值,但是都为空。。如果把样式内嵌到标记里就可以了... 我想通过JS中的alert(document.getElementById("d1").style.width);输出属性值,但是都为空。。如果把样式内嵌到标记里就可以了。这是为什么呢?
怎样调用外部CSS文件里的属性?
展开
 我来答
百度网友8882490
2009-04-16 · TA获得超过1747个赞
知道小有建树答主
回答量:1190
采纳率:0%
帮助的人:990万
展开全部
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>
眭浚n0
2012-07-14
知道答主
回答量:42
采纳率:0%
帮助的人:10.2万
展开全部
var ocssRules=document.styleSheets[0].rules;//0代表第一个相应的CSS外部链接
var class1=ocssRules[0];//0代表 第一个相应的CSS外部链接的第一个CLASS规则。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大白日出山1
2009-04-11 · TA获得超过136个赞
知道答主
回答量:164
采纳率:0%
帮助的人:0
展开全部
style.width是标签内的属性,你做的是得到某个属性值,就好比getElementById("d1").title得到该标签的title属性一样。

后面那个问题想了一下不太会,不知可不可以用js读取到css文件..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
勇气和激情
2009-04-11 · TA获得超过466个赞
知道小有建树答主
回答量:750
采纳率:100%
帮助的人:260万
展开全部
如果是ie类,使用.currentStyle
如果是ff类,使用.getComputedStyle

参考资料: http://www.jimzhan.com/archives/481

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式