如何使用DOM检索style.top,还有其他方法吗?

时间:2011-12-27 05:45:50

标签: javascript html css dom

我指定了一个ID为testBox的div:

<div id="testBox"></div>

并在头部区域设置样式:

#testBox {
        background: red;
        width: 25px;
        height: 25px;
        left: 0;
        top: 0;
            }

然后在身体的底部,我把JS:

var box = document.getElementById("testBox");
        console.log(box.style.left);
        console.log(box.style.width);

在FireFox中使用FireBug,但它只是告诉我:

  

这是一个空字符串......

但是当我将样式信息放在div标签中时:

<div id="testBox" style="background: red;width: 25px;height: 25px;"></div>

然后JS可以完成它的工作,检索我想要的所有信息

所以这是将样式信息全部内联到内联的唯一方法,或者我只是想念一些东西,毕竟我只是JS和DOM的新手....

2 个答案:

答案 0 :(得分:1)

您可以尝试getComputedStyle()。它给出了元素的所有CSS属性的最终使用值。

var box = document.getElementById("testBox");
var style=window.getComputedStyle(box);
console.log("Height : " + style["height"]);
console.log("Width : " + style["width"]);
console.log("Left : " + style["left"]);

答案 1 :(得分:0)

当您说box.id返回给您的是您在html中声明的box元素的id属性。

当您说box.style时,您正在访问也是基于您的标记创建的javascript对象。

创建样式属性的dom表示时,不使用未内联定义的样式属性。

这是article突出显示此行为。

但是,如果您使用像jQuery这样的库,则可以

$(function(){alert($("#textBox").css("width"));});

这将为您提供css值。

更新:

感谢AVD让我指出了正确的方向: 这是一种使用他的解决方案的方法,但增加了对IE的支持。 9:

var box = document.getElementById("testBox");
var style = window.getComputedStyle ? window.getComputedStyle(box) : box.currentStyle;

alert("Height : " + style["height"]);
alert("Width : " + style["width"]);
alert("Left : " + style["left"]);

这是fiddle