Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   обясните плз почему мой SetInterval так странно себя ведет? (https://javascript.ru/forum/project/41790-obyasnite-plz-pochemu-mojj-setinterval-tak-stranno-sebya-vedet.html)

Влад31/08/2000 29.09.2013 15:24

обясните плз почему мой SetInterval так странно себя ведет?
 
var alert_stylesheet = document.styleSheets[1];
var o=0;
function my_alert()
{
var t = setInterval(function() {
o = o+1;
if(o!=51)
{
alert_stylesheet.deleteRule(0);
alert_stylesheet.insertRule(".overlay{background-color: gray; opacity: 0."+o+"; width: 100%; height: 100%; position: fixed; left: 0; top: 0;}",0);
}
else
{
clearInterval(t);
alert_stylesheet.deleteRule(0);
alert_stylesheet.insertRule(".overlay{background-color: gray; opacity: 0.50; width: 100%; height: 100%; position: fixed; left: 0; top: 0;}",0);
}
}, 125);
}

Задача этого скрипта - затемнение страницы. На всю страницу накладывается див с серым фоном. Скрипт должен менять opacity дива. И он меняет. Но сразу после этого страница начинает затемняться еще раз. Объясните мне плз откуда взялось второе затемнение?

ksa 29.09.2013 17:02

Цитата:

Сообщение от Влад31/08/2000
почему мой SetInterval так странно себя ведет?

setInterval() всегда ведет себя одинаково... А вот твой алгоритм видать поганый... ;)
Тестируй его и будет тебе счастие...

danik.js 29.09.2013 17:14

Это не касается конечно setInterval, но! Этот код работы с таблицей стилей не кроссбраузерный. Да и нафиг он не вперся вообще тут. Используй element.style непосредственно. Например
var overlay = document.querySelector('.overlay');
overlay.style.opacity: 0.5;

Цвет и прочие свойства задай в css. Да и анимацию можно тоже в css замутить. Никто не погибнет если увидит в архивном браузере переход без анимации.


Часовой пояс GMT +3, время: 07:06.