Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.12.2013, 14:33
Аватар для Nailya
Кандидат Javascript-наук
Отправить личное сообщение для Nailya Посмотреть профиль Найти все сообщения от Nailya
 
Регистрация: 05.04.2013
Сообщений: 135

раздвижение блока вниз
Всем доброго времени суток!

У меня раздвигающийся блок вниз, по клику.
Проблемы следующие:
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;
	}
Ответить с цитированием
  #2 (permalink)  
Старый 12.12.2013, 16:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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>

Последний раз редактировалось рони, 12.12.2013 в 16:18.
Ответить с цитированием
  #3 (permalink)  
Старый 12.12.2013, 16:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Nailya,
проверьте вариант выше
Ответить с цитированием
  #4 (permalink)  
Старый 12.12.2013, 16:56
Аватар для Nailya
Кандидат Javascript-наук
Отправить личное сообщение для Nailya Посмотреть профиль Найти все сообщения от Nailya
 
Регистрация: 05.04.2013
Сообщений: 135

рони,спасибо огромное все заработало как надо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Плавное раскрытие и сворачивание блока StyLLeR jQuery 6 07.07.2014 16:00
Движение по элементам блока без перезапуска функции выпадающеего меню. tutelaris Элементы интерфейса 4 26.04.2013 09:15
вычисление и фиксация ширины блока konstantin-mn jQuery 2 27.08.2012 11:42
слайд панели tadjik1 Элементы интерфейса 22 02.04.2012 17:13
Два блока div разъезжаются при скроллинге окна браузера. call007 jQuery 0 03.04.2011 16:21