Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Не работает в IE8 (https://javascript.ru/forum/css-html-internet-explorer/43370-ne-rabotaet-v-ie8.html)

Nailya 03.12.2013 12:50

Не работает в IE8
 
Всем доброго время суток!

У меня блок, который раздвигается вниз по клику, везде работает, кроме IE8.
Проверяла алертами не работает с момента переменной height. Господа, направьте в правильное русло, не понимаю, как исправить ошибку.

function move_obj(id,mt,mts)
{
	/*alert('hello');*/
	var obj = document.getElementById(id);//Получаем id элемента HTML
	
	var height = parseInt(window.getComputedStyle(obj,null).height);//высота выдвигаемого элемента пошагово
	alert(height);
	if (mt == 10000 && height == 0)//при условии, если высота равна 0, 
	{
	var objWarpHeight = document.getElementById('warpHeight');//передаем высоту скрытого блока с чекбоксами
	var mt =  objWarpHeight.innerHTML;//в переменную mt передается значение высоты
	} 
	if (mt == 10000 && height != 0)
	{
		mt = 0;
		mts = mts*(-1);
	}

	if ((height < mt && mts > 0 )||(height > mt && mts < 0 ))
	{
		height = height+mts;
		obj.style.height = height + 'px';		
				
	// Ниже запускаем тайм аут в 6 мс, после чего перезапускаем фунvкцию.
	// Функция перезапускается до тех пор, пока выполняется условие.	
		window.setTimeout(function(){move_obj(id,mt,mts)}, 1);
	} 
}

рони 03.12.2013 13:13

Nailya,
почему не работает:
http://caniuse.com/#search=getComputedStyle
как сделать чтоб работало:
http://learn.javascript.ru/styles-an...-currentstyle

lord2kim 03.12.2013 13:15

Nailya, метод getComputedStyle() не работает в IE8 и ниже, вместо него используется свойство currentStyle
пример из учебника
<style> #margin-test { margin: 1%; border: 1px solid black; } </style>
<div id="margin-test">Тестовый элемент с margin 1%</div>
 
<script>
function getIEComputedStyle(elem, prop) {
  var value = elem.currentStyle[prop] || 0
 
  // we use 'left' property as a place holder so backup values
  var leftCopy = elem.style.left
  var runtimeLeftCopy = elem.runtimeStyle.left
 
  // assign to runtimeStyle and get pixel value
  elem.runtimeStyle.left = elem.currentStyle.left
  elem.style.left = (prop === "fontSize") ? "1em" : value
  value = elem.style.pixelLeft + "px";
 
  // restore values for left
  elem.style.left = leftCopy
  elem.runtimeStyle.left = runtimeLeftCopy
  
  return value
}

  var elem = document.getElementById('margin-test');
  if (!elem.getComputedStyle) // старые IE
    document.write(getIEComputedStyle(elem, 'marginTop'));
  else
    document.write('Пример работает только в IE<9');
</script>


либо чтобы не заморачиваться в проверках при использовании данного метода написать так
if (!window.getComputedStyle) {
window.getComputedStyle = function(elem, prop) {
   ... // code function
}

Nailya 03.12.2013 13:23

понятно, спасибо


Часовой пояс GMT +3, время: 08:54.