Javascript.RU

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

Не работает в 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);
	} 
}
Ответить с цитированием
  #2 (permalink)  
Старый 03.12.2013, 13:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

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

Последний раз редактировалось рони, 03.12.2013 в 13:15.
Ответить с цитированием
  #3 (permalink)  
Старый 03.12.2013, 13:15
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

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
}

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

понятно, спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает код внутри циклов DZHETIGAPA Events/DOM/Window 1 21.06.2011 01:03
уменьшение opacity работает, увеличение - не работает Polkan Общие вопросы Javascript 10 17.06.2011 13:02
ajax запросы, работает на одних компах и не работает на других vtornik23 AJAX и COMET 2 22.03.2010 18:22
Работает в IE6, но не работает в IE8.. ttchamer Internet Explorer 2 18.02.2010 21:06
Safari + ajax некорректно работает, а в других работает demi AJAX и COMET 35 15.07.2009 14:11