Проблема с ClientHeight
Вложений: 3
Привет!
Такая проблема: Не могу понять почему неправильно вычисляется размер колонки через 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 А надо, чтобы уменьшалась. В чём глюк? |
Часовой пояс GMT +3, время: 02:41. |