【发布时间】:2016-04-01 02:53:52
【问题描述】:
请先查看这个问题:
document.body.style.marginTop returning blank string in JS
有几个可行的解决方案......然后是我的可行解决方案:
https://stackoverflow.com/a/34473070/2813224
总结:
尝试通过执行以下代码及其变体来获取 div 的 margin-top 值:
/*~~~~~~~~~~~~~~~~~~~[ Attempt 1 ]~~~~~~~~~~~~~~~~~~~~~~~~*/
alert(document.getElementById("testDiv").style.marginTop);
/*~~~~~~~~~~~~~~~~~~~[ Attempt 2 ]~~~~~~~~~~~~~~~~~~~~~~~~*/
var tDiv = document.getElementById('testDiv');
var tMgn = tDiv.style.marginTop;
alert(tMgn);
/*~~~~~~~~~~~~~~~~~~~[ Attempt 3 ]~~~~~~~~~~~~~~~~~~~~~~~~*/
var tDiv = document.querySelector('testDiv');
alert(tDiv.style.marginTop);
/*~~~~~~~~~~~~~~~~~~~[ Attempt 4 ]~~~~~~~~~~~~~~~~~~~~~~~~*/
function mTop() {
var tDiv = document.getElementById('testDiv');
var tMgn = tDiv.style.marginTop;
alert(tMgn);
}
mTop();
这些组合的共同点是.style.marginTop。此后不久,操作员的问题是answered。
我的问题是:
我不知道为什么,但我首先通过 JS 显式分配 margin-top 使其工作。我从来不需要首先设置样式值来获取样式值,特别是如果它已经由 CSS 设置。为什么会这样简单:
alert(document.getElementById("testDiv").style.marginTop);
不起作用,但这样做:
document.getElementById("testDiv").style.marginTop = "50px";
alert(document.getElementById("testDiv").style.marginTop);
当 CSS 已经存在时:
#testDiv { margin-top: 50px; }
?
我的工作答案片段:
document.getElementById("testDiv").style.marginTop = '50px';
document.body.style.marginTop = '100px';
alert(document.getElementById("testDiv").style.marginTop);
alert(document.body.style.marginTop);
body {
margin-top: 100px;
}
#testDiv {
margin-top: 50px;
}
hi!
<div id="testDiv">test</div>
【问题讨论】:
-
可能是因为
element.style只返回 inline 样式。对于在外部样式表中设置的样式,您需要getComputedStyle而不是 -
感谢您的输入,@adeneo 好的,我明白了,但是当
element.style预先分配值时,块元素的element.style怎么可能返回正确的值?跨度> -
element.style设置内联样式,并再次使用element.style获取样式only 获取内联样式。 -
所以如果我有一列 div 并且我使用
element.style设置其中一个的边距,那么该 div 会变成内联并破坏布局?一定要记住这一点,谢谢@adeneo
标签: javascript html css