提问者:小点点

使用javascript从另一个div height设置div height


我有两个并列的沙发。它们都没有标准高度,但第一个在另一个提交表单后填充内容时就有了内容。我想把第二个的高度和第一个一样。

以下是html:

<div id='left'>
...........
</div>
<div id='right'>
...........
</div>

<script type="text/javascript">
    $(document).ready ( function(){

    var divHeight = document.getElementById('left').style.height;
    document.getElementById('right').style.height = divHeight+'px';
    });​
</script>

我在控制台上没有任何错误,但是第二个div的高度没有改变。有什么帮助吗?


共3个答案

匿名用户

您正在寻找越轨。未设置最左侧div的height属性(因为这是实际的CSS属性,并且您没有静态设置高度),但offsetHeight是由其内容定义的div的实际高度。

var offsetHeight = document.getElementById('left').offsetHeight;
document.getElementById('right').style.height = offsetHeight+'px';

下面是一个要演示的JSFIDLE。

注意还有clientHeight。不同的是offsetHeight还包括填充和边框。看看这个答案。

匿名用户

使用jQuery

$(document).ready ( function(){
    var leftHeight = $('#left').height();

    $('#right').height(leftHeight);
});

或者直接

$(document).ready ( function(){
  $('#right').height( $('#left').height() );
});

匿名用户

我看到您正在使用jQuery。以下是jQuery版本,它相当于您使用的本机JavaScript代码。

$(document).ready ( function(){
 var divHeight = $('#left').height();
 $('#right').height(divHeight);
});

演示(JsFiddle)。

由于您使用leftright作为元素的Id,我假设它们是内联块s。因此,您应该设置另一个元素的偏移高度,而不是实际高度:

$(document).ready ( function(){
 var divHeight = $('#left')[0].offsetHeight;
 $('#right').height(divHeight);
});

演示(JsFiddle)。