我正在尝试检索主体的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元素的第一个子元素)似乎是一个问题。有任何想法吗?

最佳答案

这有点脏,但是您可以尝试这样做:

bg1.style.position = "relative";

var savedHeight = b.scrollHeight;

bg1.style.position = "absolute";


不知道这是否行得通,但可以尝试一下。

10-07 17:22