Не работает в 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); } } |
Nailya,
почему не работает: http://caniuse.com/#search=getComputedStyle как сделать чтоб работало: http://learn.javascript.ru/styles-an...-currentstyle |
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 } |
понятно, спасибо
|
Часовой пояс GMT +3, время: 00:35. |