Вопрос по javascript – получить высоту div и установить высоту другого div, используя его

3

У меня есть два div, и ни один из них не имеет высоты, заданной в css, так как я хочу взять любую высоту, которой они заканчиваются, и установить другой div в качестве этой высоты.

JavaScript у меня есть это

function fixHeight() {
    var divh = document.getElementById('prCol1').height;
    document.getElementById('prCol1').innerHTML = '<ul><li>' + divh + '</li></ul>';
    document.getElementById('prCol2').style.height = divh + 'px';
}

У меня есть следующая строка кода, чтобы посмотреть, получаю ли я какой-то реальный ответ.

document.getElementById('prCol1').innerHTML = '<ul><li>' + divh + '</li></ul>';

У меня установлен режим загрузки для запуска функции

мои два дива выглядят так

<div id="prCol1">
     ..content..
</div>
<div id="prCol2" class="slideshow">
    ..content..
</div>

Ваш Ответ

4   ответа
2

Вы можете использовать jQuery, чтобы получить высоту и установить ее.

var h = $("#prCol1").height();
$("#prCol2").height(h);
7

offsetHeight - http://jsfiddle.net/HwATE/

function fixHeight() {
    var divh = document.getElementById('prCol1').offsetHeight; /* change this */
    document.getElementById('prCol1').innerHTML = '<ul><li>' + divh + '</li></ul>';
    document.getElementById('prCol2').style.height = divh + 'px';
}
Я не верю, что offsetHeight полностью поддерживается всеми браузерами. Я не провел подробного исследования, решает ли jQuery проблемы, но в этом ли смысл?vadikom.com/dailies/…
@JohnCulviner Да, это может вызвать1px Разница, но в случае OP это, на самом деле, не очень актуально, я думаю. Его цель - сделать 2<div>-с одинаково высоко и именно это произойдет. Я полагаю, что возможность (это может даже не произойти)1px Разница в IE9 является хорошим компромиссом за то, что она не включает библиотеку 40 КБ (если она еще не включена). И сырой JS всегда быстрее .. ИoffsetHeight поддерживается в любом браузере -quirksmode.org/dom/w3c_cssom.html
0

Есть плагины jQuery, чтобы сделать это в общем виде.Вот один.

0

ысоту элемента, как вы пытаетесь, в любом браузере, о котором я знаю. Вот код, если вы используете JQuery, который очень прост. Я бы не стал делать это без jQuery, потому что браузеры могут отличаться в зависимости от того, как вы получаете доступ к высоте.

function fixHeight() {
    var $prCol1 = $('#prCol1');
    var divh = $prCol1.height();
    $prCol1.html('<ul><li>' + divh + '</li></ul>');
    $('#prCol1').height(divh);
}
Посмотрите на мою jsfiddle, сэр ;-)

Похожие вопросы