尝试使用javascript访问div的css属性[重复]
Posted
技术标签:
【中文标题】尝试使用javascript访问div的css属性[重复]【英文标题】:trying to acess css properties of a div using javascript [duplicate] 【发布时间】:2013-02-01 14:55:56 【问题描述】:我尝试使用 javascript 访问 div 的宽度, 但无论我设置什么,它每次都在打印 NaN。 我是 javascript 新手,我的代码有什么问题?
<html>
<head>
<title>hello</title>
<style type="text/css">
#base
width:300px;
height:30px;
background-color: black;
#scr
height:30px;
width:10px;
background-color: red;
</style>
<script type="text/javascript">
var magic = function()
console.log("inside magic")
var d = document.getElementById("scr");
var b = d.style.width;
console.log(b);
b = parseInt(b);
console.log(b);
</script>
</head>
<body>
<div id="base">
<div id = "scr" >
</div>
</div>
<br>
<button onclick="magic()">Magic</button>
</body>
</html>
【问题讨论】:
@user1263375:我没有看到使用 jQuery 接受的答案。您现在接受的答案与另一个问题的答案相同。 style属性其实就是元素的属性style。因此,当您拥有你可以使用这个函数来做到这一点:
function getStyle(el,styleProp)
var x = document.getElementById(el);
if (x.currentStyle)
var y = x.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
return y;
发生了什么的解释是here 请注意,您必须使用元素的 id 通过函数访问其样式属性。 如果要使用选择器,请使用 document.querySelector() 代替 document.getElementById()
【讨论】:
如果两个 if 语句都不匹配它们的条件,那么这段代码会导致一个未定义的错误。【参考方案2】:你应该试试
d.offsetWidth
而不是
d.style.width
【讨论】:
为什么 d.style.width 不起作用,它应该起作用吗? @user1263375:因为样式不是在元素上设置的,而是通过 CSS 规则设置的。【参考方案3】:代码d.style.width
返回由css明确指定的宽度,而d.offsetWidth
返回计算的宽度。
【讨论】:
以上是关于尝试使用javascript访问div的css属性[重复]的主要内容,如果未能解决你的问题,请参考以下文章