4

我想在调整窗口大小时更改 div 的高度。我知道它可以使用 css 来完成,height:100%;但这不适用于我需要的东西。我想在没有 JQuery 或任何其他框架的纯 javascript 中实现这一点。

这是我所做的:

<div id="left">
<div id="inner">

</div>
</div>

CSS

#left{

margin-top:40px;
width:200px;
height:576px;
background:white;

}
#inner{

height:100%;
overflow-y:scroll;
}

JAVASCRIPT

window.onload=
window.onresize=function(){
var left=document.getElementById('left');
var window_height = window.innerheight;
if ( window_height > 600px ) { left.style.height = document.body.offsetHeight
+"px";    } 
else { } 
} 

id 为 left 的 div 必须具有相同的边距。我只是想更改 div 的高度以匹配内部窗口高度(以 px 为单位)。

谢谢你。

4

2 回答 2

2

window.innerheight应该是window.innerHeight(大写H)。请注意,IE9 之前的 IE 不支持它。

另请注意,您在这里将元素与数字进行比较:

if ( left < window_height )
//   ^--- element

您可能想从中获取高度left,因为这种情况永远不会成立。

于 2013-07-18T04:56:45.320 回答
1

请参阅 jsfiddle jsfiddle

尝试使用 console.log 了解您处理的值或对象类型

window.onload = window.onresize = function () {
    var left = document.getElementById('left');
    var window_height = window.innerHeight;
    console.log(left.offsetHeight);
    console.log(window_height);
    if (left.offsetHeight < window_height) {
        left.style.height = window_height + "px";

    } else {}
}

首先设置 100% 以知道确切的高度数,然后再分配回高度。

更新代码更新了jsfiddle

window.onload = window.onresize = function () {
    var left = document.getElementById('left');

    console.log(left.offsetHeight);
    var window_height = window.innerHeight;

    if (left.offsetHeight < window_height) {
        left.style.height = '100%';    
        left_height=left.offsetHeight;
        console.log(left_height);
        left.style.height = left_height + "px";

    } else {}
};
于 2013-07-18T05:38:21.420 回答