在用js控制css屬性時,行內css屬性可以任意控制,但若是在<style></style>中寫的css屬性,均不能用alert讀取,但是賦值卻有幾種現象,
第一種:無法讀取,能直接賦值
如下:
<!DOCTYPE html>
<head>
<title>新建網頁</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content=" "/>
<style>
div{
width:300px;
height:300px;
border:1px solid blue;
}
</style>
</head>
<body>
<div>
<p>
12345
</p>
</div>
</body>
<script>
var div=document.getElementsByTagName('div')[0];
alert(div.style.width);
div.style.width='600px';
</script>
</html>
第二種:無法進行計算后的賦值,
div.style.width=parseInt(div.style.width)+100+'px';
這行代碼不起作用
解決方式:這種情況下就要用到obj.currentStyle和getComputedStyle()這兩個函數來先讀取到width的值,然后進行計算,再賦值。
<script>
function getStyle(obj,attr)
{
return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj,null)[attr];
}
function t1()
{
var div=document.getElementsByTagName('div')[0];
div.style.width=parseInt(getStyle(div,'width'))+5+'px';//兩個方法獲取對象為只讀
}
</script>
第三種:先直接賦值,然后進行計算后賦值,這樣能夠兩次都賦值
即:
<script>
var div=document.getElementsByTagName('div')[0];
alert(div.style.width);
div.style.width='600px';
alert('。。。');
div.style.width=parseInt(div.style.width)+100+'px';
</script>
這是因為在前一次賦值計算中:div.style.width='600px';已經給他賦了行內css值,所以后面一個進行計算后賦值時可以讀取到並賦值。
已解決~~~
