JavaScript, глюк с clearInterval
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
JavaScript, глюк с clearInterval - 2008-06-20 12:55:46.443333
|
|
|
ZneP
Сообщений: 910
Оценки: 0
Присоединился: 2006-08-21 16:11:47
|
Всем привет! есть скрипт: quote:
<script type="text/javascript"> var interval_id; var browserdetect; function initialize(){ browserdetect=cartwindow.filters? "ie" : typeof(cartwindow.style.MozOpacity) == "string" ? "mz" : ""; if (browserdetect == "ie") { cartwindow.style.pixelLeft=document.body.scrollLeft+document.body.clientWidth-cartwindowtable.offsetWidth; cartwindow.style.pixelTop=document.body.scrollTop+document.body.clientHeight-cartwindowtable.offsetHeight; } else { cartwindow.style.left=(document.body.scrollLeft+document.body.clientWidth-cartwindowtable.offsetWidth) + "px"; cartwindow.style.top=(document.body.scrollTop+document.body.clientHeight-cartwindowtable.offsetHeight) + "px"; } FadeCartWindow(); } function fill_yellow(id) { document.getElementById(id).style.background = "#FFCC00"; initialize(); } function FadeCartWindow() { cartwindow.style.visibility = 'visible'; interval_id=setInterval("FadeCartWindowLevel()",150); } function FadeCartWindowLevel() { if (browserdetect == "ie") {cartwindow.filters.alpha.opacity+=10;} else if (browserdetect == "mz") {cartwindow.style.MozOpacity-=.1;} else {cartwindow.style.visibility = 'hidden';} if ((cartwindow.style.MozOpacity == 0.0)||(cartwindow.filters.alpha.opacity == 100)) { clearInterval(interval_id); interval_id=setInterval("InstantHide()",1000); } } function InstantHide() { clearInterval(interval_id); cartwindow.style.visibility = 'hidden'; } </script> На страничке есть кнопка, при нажатии на которую плавно должно всплыть окошечеко (div элемент) и исчезнуть. Первый раз все срабатывает как надо, а последующие нажатия на кнопку приводят к мгновенному появлению и исчезанию всплывающего окна. Все дело в интервалах, стопудов. Я использую clearInterval(), но что-то от него толку нуль. Во время выполнения скрипта браузер не ругается на ошибки. Что это за глюк такой? Или у меня руки искривились? PS Добавил скрипт в тэги цитата, чтобы можно было сделать выделение жирным.
|
|
|
RE: JavaScript, глюк с clearInterval - 2008-06-20 14:11:05.946666
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
У тебя проблема в следующих строках: quote:
if ((cartwindow.style.MozOpacity == 0.0)||(cartwindow.filters.alpha.opacity == 100)) { clearInterval(interval_id); interval_id=setInterval("InstantHide()",1000); } жирным выделилм причину. Если убрать это, то в опере все отлично работает.
|
|
|
RE: JavaScript, глюк с clearInterval - 2008-06-20 14:36:40.823333
|
|
|
ZneP
Сообщений: 910
Оценки: 0
Присоединился: 2006-08-21 16:11:47
|
ВСЕ проблема решена. забыл добавить сброс прозрачности но 0 для всплывающего окна. :) Орб, то что ты выделел жирным вообще никак не влияло на глюк
|
|
|
RE: JavaScript, глюк с clearInterval - 2008-06-20 15:01:26.496666
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
quote:
ORIGINAL: ZneP ВСЕ проблема решена. забыл добавить сброс прозрачности но 0 для всплывающего окна. :) Орб, то что ты выделел жирным вообще никак не влияло на глюк Весьма странно. В каком браузере тестил? Вот скрипт, который работает в опере 9.5 <script>
var interval_id;
var browserdetect;
function initialize(){
browserdetect=cartwindow.filters? "ie" : typeof(cartwindow.style.MozOpacity) == "string" ? "mz" : "";
/*if (browserdetect == "ie")
{
cartwindow.style.pixelLeft=document.body.scrollLeft+document.body.clientWidth-cartwindowtable.offsetWidth;
cartwindow.style.pixelTop=document.body.scrollTop+document.body.clientHeight-cartwindowtable.offsetHeight;
}
else
{
cartwindow.style.left=(document.body.scrollLeft+document.body.clientWidth-cartwindowtable.offsetWidth) + "px";
cartwindow.style.top=(document.body.scrollTop+document.body.clientHeight-cartwindowtable.offsetHeight) + "px";
} */
FadeCartWindow();
}
function fill_yellow(id)
{
document.getElementById(id).style.background = "#FFCC00";
initialize();
}
function FadeCartWindow()
{
cartwindow.style.visibility = 'visible';
interval_id=setInterval("FadeCartWindowLevel()",1050);
}
function FadeCartWindowLevel()
{
if (browserdetect == "ie")
{cartwindow.filters.alpha.opacity+=10;}
else if (browserdetect == "mz")
{cartwindow.style.MozOpacity-=.1;}
else
{cartwindow.style.visibility = 'hidden';}
if ((cartwindow.style.MozOpacity == 0.0))
{
clearInterval(interval_id);
interval_id=setInterval("InstantHide()",1000);
}
}
function InstantHide()
{
clearInterval(interval_id);
cartwindow.style.visibility = 'hidden';
}
</script>
<div id='cartwindow' style="visibility:hidden;">asdf
</div>
<input type='button' onClick='initialize();'>
|
|
|
RE: JavaScript, глюк с clearInterval - 2008-06-20 15:07:36.523333
|
|
|
ZneP
Сообщений: 910
Оценки: 0
Присоединился: 2006-08-21 16:11:47
|
тестил в Опере 9,27, лиса 2, осел 6 твой скрипт только один раз корректно отработает появление окна, так как ты не сбросил параметр cartwindow.style.MozOpacity у тебя cartwindow.style.MozOpacity доходит до 0,0 и окно скрывается, последующие вызовы функции initialize() просто будут отображать и прятать окно, без эффекта прозрачности
|
|
|
|
|