我正在尝试检索正文的scrollHeight,以便重置id =“background1”的div的大小。如果在我的外部CSS中我将id设置为position:absolute scrollHeight总是返回0.如果我将它设置为position:relative scrollHeight给我正确的值。当然,css中还有更多的选择器,另一个设置为position:absolute - 保留它不会改变上述行为。代码:
<script type="text/javascript">
function getElement(elem) {
var art;
if ( document.all ) { // this is the way old msie versions work
art = document.all[elem];
}
else if ( document.layers ) { // this is the way nn4 works
art = document.layers[elem];
}
else if ( document.getElementById ) { // this is the way the standards work
art = document.getElementById( elem );
}
return art;
}
function toggleArticleDisplay(elem) {
var artArray = document.getElementsByTagName("article");
for(var i = 0; i < artArray.length; i++) {
artArray[i].style.display = "none";
}
var art = getElement(elem);
art.style.display = "block";
var bg1 = document.getElementById("background1");
bg1.style.height = "550px";
var b = document.getElementById("potoococha");
alert(b.scrollHeight);
bg1.style.height = (b.scrollHeight >= window.innerHeight) ?
(b.scrollHeight+20) + "px" : window.innerHeight + "px";
}
</script>
</head>
<body id="potoococha" onLoad="toggleArticleDisplay('homeText')">
<div id="background1" style="height:615px;"/>
现在是css:
div#background1 { position : absolute;
left : 45px;
top : 0px;
z-index : 1;
width : 50px;
background-color : rgba(182,181,91,1.0); }
仅仅将该位置更改为相对使得javascript函数警报返回正确的scrollHeight,但出于其他原因我需要将其作为绝对值。如果某个元素绝对定位,scrollHeight是否不起作用?正如我所说,还有另一个后来绝对定位的元素,它对scrollHeight的返回值没有任何影响。只有这个元素是body元素的第一个子元素才会出现问题。有什么想法吗?
答案 0 :(得分:1)
这有点肮脏,但您可以尝试这样做:
bg1.style.position = "relative";
var savedHeight = b.scrollHeight;
bg1.style.position = "absolute";
不确定这是否有用,但也许可以尝试一下。
答案 1 :(得分:1)
我已经解决了控制变量的问题
document.scrollingElement.scrollHeight
代替
document.body.scrollHeight