Javascript 滚动高度不与位置一起工作:绝对高度

Javascript 滚动高度不与位置一起工作:绝对高度,javascript,css,Javascript,Css,我试图检索正文的滚动高度,以便用id=“background1”重置div的大小。如果在我的外部css中,我将该id设置为位置:绝对则滚动高度始终返回0。如果我将其设置为position:relativescrollHeight会给出正确的值。当然,css中还有更多的选择器,其中一个选择器设置为位置:绝对值——保持此状态不会改变上述行为。守则: <script type="text/javascript"> function getElement(elem) {

我试图检索正文的
滚动高度
,以便用id=“background1”重置div的大小。如果在我的外部css中,我将该id设置为
位置:绝对
滚动高度
始终返回0。如果我将其设置为
position:relative
scrollHeight
会给出正确的值。当然,css中还有更多的选择器,其中一个选择器设置为
位置:绝对值
——保持此状态不会改变上述行为。守则:

<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;"/>

只需将该位置更改为relative,javascript函数就会返回正确的
scrollHeight
,但出于其他原因,我需要将其设置为
绝对值。如果某个元素处于绝对位置,
scrollHeight
是否不起作用?正如我所说,后面还有一个绝对定位的元素,它对
scrollHeight
的返回值没有任何影响。只有这个元素(body元素的第一个子元素)似乎是个问题。有什么想法吗?

这是一种肮脏的黑客行为,但你可以尝试这样做:

bg1.style.position = "relative"; 

var savedHeight = b.scrollHeight;

bg1.style.position = "absolute";

不确定这是否有效,但不妨尝试一下。

这是一种肮脏的黑客行为,但您可以尝试这样做:

bg1.style.position = "relative"; 

var savedHeight = b.scrollHeight;

bg1.style.position = "absolute";

不确定这是否有效,但不妨尝试一下。

我已经解决了控制变量的问题

document.scrollingElement.scrollHeight
而不是

document.body.scrollHeight

我已经解决了控制变量的问题

document.scrollingElement.scrollHeight
而不是

document.body.scrollHeight