Привет!
Такая проблема:
Не могу понять почему неправильно вычисляется размер колонки через ClientHeight, причём во всех браузерах неправильно! Скорей всего либо я чего-то совсем не понимаю, либо глюк вовсе не там, где я его ищу.
Итак.
На сайте есть две колонки, содержание которых наполняется динамически (левая - меню leftmenu, правая - текст mtext). Между ними есть третья колонка, которая по высоте ровняется на большую из этих двух (там "кубики" и их должно быть целое число, поэтому высота этой колонки подгоняется под высоту большей из колонок)
function make_height() {
var text=document.getElementById('mtext');
var left=document.getElementById('leftmenu');
if (text.clientHeight>left.clientHeight)
{ var h=text.clientHeight;
}
else
{ var h=left.offsetHeight;
}
var ost=h%113;
if (ost>0)
h=(1+(h-ost)/113)*113;
var zen=document.getElementById('zen');
zen.height=h+9;
}
В левой колонке - разворачивающееся меню.
Организовано оно так: пункты подменю спрятаны style="display:none;", при клике на раскрываемом пункте меню их стиль меняется на display:block; При повторном клике - обратно.. Ну, то есть, классика:
function Menu(id)
{ var menu=document.getElementsByName('menu_'+id);
var src=document.getElementById(id);
for (var i=0; i<menu.length; i++)
{
if (menu[i].style.display=='none')
{ menu[i].style.display='block';
src.src='tri.gif';
}
else
{ menu[i].style.display='none';
src.src='irt.gif';
}
}
Ну понятно: раз кликаешь - меню вываливается, два кликаешь - собирается обратно.
Хочу ж я после этого чтобы ширина средней колонки тоже подгонялась: и когда меню свёрнуто, и когда развёрнуто.
Вставляю в самый конец второй функции вызов первой: make_height();
Теперь, ВНИМАНИЕ!
Когда меню разворачивается, высота левой колонки становится БОЛЬШЕ, высота средней колонки увеличивается на некую высоту H (ну, типа новая высота = старая высота+H).
А когда меню сворачивается, средняя колонка НЕ УМЕНЬШАЕТСЯ, а наоборот увеличивается. Т.е. её размер становится не новая высота=старая высота-H, а опять новая высота = старая высота+H
А надо, чтобы уменьшалась.
В чём глюк?