Не работает в 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, время: 06:46. |