раздвижение блока вниз
Всем доброго времени суток!
У меня раздвигающийся блок вниз, по клику. Проблемы следующие: 1. Работает в FF и от IE9, в остальных не хочет работать. 2. Для IE8 использовала obj.currentStyle, но он работает при условии, что в стилях задана высота, а у меня высота раздвигающегося блока динамична, если высоту не задаю в стилях, то при алерте передает NaN 3. В IE8 не передает высоту в скрытый див, подозрение на innerHTML 4. В Chrome тоже не работает, высоту в скрытый див innerHTML передает,но не получает его (mt = objWarpHeight.innerHTML) Вот код:
window.onload = function(){
var obj = document.getElementById('Inner');//разворачиваемый див
var computedStyle = window.getComputedStyle ? getComputedStyle(obj,null) : obj.currentStyle;
var height = parseInt(computedStyle.height);//получение текущей высоты дива с id="Inner"
var objWarpHeight = document.getElementById('warpHeight');//скрытый див
objWarpHeight.innerHTML = height;//вставка высоты в скрытый див
obj.style.height = 0 + "px";//при загрузке обнуляет высоту
}
Функция, которая разворачивает див
function move_obj(id,mt,mts)
{
var obj = document.getElementById(id);
var computedStyle = window.getComputedStyle ? getComputedStyle(obj,null) : obj.currentStyle;
var height = parseInt(computedStyle.height);//получает текущую пошаговую высоту
if (mt == 10000 && height == 0)//при условии, если высота равна 0, то разворачивает див
{
var objWarpHeight = document.getElementById('warpHeight');//передаем высоту из скрытого дива
mt = objWarpHeight.innerHTML;//в переменную mt передается значение высоты
}
if (mt == 10000 && height != 0)//при условии, если высота не равна 0, то сворачивает див
{
mt = 0;
mts = mts*(-1);
}
if ((height < mt && mts > 0 )||(height > mt && mts < 0 ))
{
height = height+mts;
obj.style.height = height + 'px';
// Ниже запускаем тайм аут в 1 мс, после чего перезапускаем фунvкцию.
// Функция перезапускается до тех пор, пока выполняется условие.
window.setTimeout(function(){move_obj(id,mt,mts)}, 1);
}
}
<div id="wrap">
<div class="pic" onClick="move_obj('Inner',10000,5)">ещё компоненты</div><!--клик-->
<div id="Inner">
<pre>
<input type="checkbox" name="3" value="yes" checked> Виноград
<input type="checkbox" name="4" value="yes" checked> Ананас
<input type="checkbox" name="7" value="yes" checked> Апельсин
<input type="checkbox" name="3" value="yes" checked> Виноград
<input type="checkbox" name="4" value="yes" checked> Ананас
<input type="checkbox" name="7" value="yes" checked> Апельсин
<input type="checkbox" name="4" value="yes" checked> Шоколад
<input type="checkbox" name="4" value="yes" checked> Каша
<input type="checkbox" name="7" value="yes" checked> End
</pre>
</div>
</div><!--end #wrap-->
#wrap{overflow:hidden;}
#wrap pre{
margin:0 -170px;
padding-top:10px;
}
#wrap .pic{
width:284px;
padding:3px 0;
background:pink;
text-align:center;
}
#wrap #Inner{
width:284px;
background: url("PodborBlock/innerBack.png") repeat-y;
}
|
Nailya,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
#wrap{overflow:hidden;}
#wrap pre{
margin:0 -170px;
padding-top:10px;
}
#wrap .pic{
width:284px;
padding:3px 0;
background:pink;
text-align:center;
}
#wrap #Inner{
width:284px;
background: url("PodborBlock/innerBack.png") repeat-y;
}
</style>
<script>
window.onload = function(){
var obj = document.getElementById('Inner');//разворачиваемый див
var height = obj.scrollHeight ;//получение текущей высоты дива с id="Inner"
var objWarpHeight = document.getElementById('warpHeight');//скрытый див
objWarpHeight.innerHTML = height;//вставка высоты в скрытый див
obj.style.height = 0 + "px";//при загрузке обнуляет высоту
}
function move_obj(id,mt,mts)
{
var obj = document.getElementById(id);
var height = obj.clientHeight;
if (mt == 10000 && height == 0)//при условии, если высота равна 0, то разворачивает див
{
var objWarpHeight = document.getElementById('warpHeight');//передаем высоту из скрытого дива
mt = objWarpHeight.innerHTML;//в переменную mt передается значение высоты
}
if (mt == 10000 && height != 0)//при условии, если высота не равна 0, то сворачивает див
{
mt = 0;
mts = mts*(-1);
}
if ((height < mt && mts > 0 )||(height > mt && mts < 0 ))
{
height = height+mts;
obj.style.height = height + 'px';
// Ниже запускаем тайм аут в 1 мс, после чего перезапускаем фунvкцию.
// Функция перезапускается до тех пор, пока выполняется условие.
window.setTimeout(function(){move_obj(id,mt,mts)}, 1);
}
}
</script>
</head>
<body> <div id="warpHeight"></div>
<div id="wrap">
<div class="pic" onClick="move_obj('Inner',10000,5)">ещё компоненты</div><!--клик-->
<div id="Inner">
<pre>
<input type="checkbox" name="3" value="yes" checked> Виноград
<input type="checkbox" name="4" value="yes" checked> Ананас
<input type="checkbox" name="7" value="yes" checked> Апельсин
<input type="checkbox" name="3" value="yes" checked> Виноград
<input type="checkbox" name="4" value="yes" checked> Ананас
<input type="checkbox" name="7" value="yes" checked> Апельсин
<input type="checkbox" name="4" value="yes" checked> Шоколад
<input type="checkbox" name="4" value="yes" checked> Каша
<input type="checkbox" name="7" value="yes" checked> End
</pre>
</div>
</div><!--end #wrap-->
</body>
</html>
|
Nailya,
проверьте вариант выше |
рони,спасибо огромное все заработало как надо
|
| Часовой пояс GMT +3, время: 07:41. |