Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Проблема с выплывающим элементом


Автор: Alexbutav 12.2.2012, 14:18
Проблема с выплывающим элементом. 
Код

var h = 0;
var bodyheight=0;
function minimize(obj){
    if(h<0){
        clearInterval(intervalId);
        h=0;
    }
    else{
        document.getElementById(obj).style.height=h+"%";
        h--;
    }
};
function maximize(obj){
    if(h > 100){
        clearInterval(intervalId2);
    }
    else{
        document.getElementById(obj).style.height=h+"%";
        h++;
    }
}
function start(obj){
    bodyheight=document.getElementById('main').offsetHeight;
    if(document.getElementById(obj).offsetHeight==0){
        h=0;
    }else{
        h=100;
    }
    if(0<document.getElementById(obj).offsetHeight&&document.getElementById(obj).offsetHeight<bodyheight){
        
    }
    else{
        if(h==0){
            intervalId2 = setInterval(function(){maximize(obj)},1);
        }
        else{
            intervalId = setInterval(function(){minimize(obj);},1);
        }
    }
}

<div id="button1" onclick="start('mypage')">что-то</div>

у элемента main, height и width равно 100%.
Все работает, но иногда, когда на кнопку нажать два раза или больше, или очень быстро два раза, заедает. Как я понял беда в том, что не выполняется условие
    if(0<document.getElementById(obj).offsetHeight&&document.getElementById(obj).offsetHeight<bodyheight)
Не понимаю почему?По сути, если условие выполнялось бы то со криптом ничего не происходило бы, а анимацция продолжалась бы, но нифига.

Автор: Alexbutav 12.2.2012, 15:05
Виноват, все равботает)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)