JS - вызов функции с повторной передачей объекта.

PHProgress

Новичок
JS - вызов функции с повторной передачей объекта.

Добрый день.

Ниже привожу пример:

Задача скрипта - плавно повышать яркость картинки...
Но почему-то не работает.?

PHP:
<script type="text/javascript" language="JavaScript"> 

/* Плавная подцветка (отцветка) кнопочек, банеров */
function FilterAlpha ( obj )
{
	var str =	obj.style.filter; //"filter: alpha(opacity=30)"
	str =	str.replace(/\D/gi, ""); //Здесь я через рег. выражение преобразую строку в целое число!

	if ( str ++ <= 100 )
	{
		//alert ('прололжаем: ' + x + '\nТекущее значение: ' +str);
		obj.style.filter  	= "alpha(opacity=" + str + ")";
		IntervalBottom 		= setInterval( "FilterAlpha("+ obj +")", 20 );
	}
	else
	{
		alert ('закончили');
		clearTimeout(IntervalBottom);
	}
}
</script>


<img id="Fsdqf" src="images/banner/index.png" style="filter: alpha(opacity=10);"
	onmouseover="FilterAlpha(this)" 
	onmouseout ="FilterAlpha(this)"
>
В PHP у меня подобный маневр с функцией работает успешно, т.е. когда я передаю одну и туже переменную от функции к функции без изменений. А в JavaScript на второй раз прокрутки функции пишет что объект отсутствует. Как быть?
 

akd

dive now, work later
Команда форума
setInterval( "FilterAlpha("+ obj +")", 20 ); - здесь ты теряешь свой обьект. /* тут почистил, бо торможу */
 

Adelf

Administrator
Команда форума
>> setInterval( "FilterAlpha("+ obj +")", 20 );

Кто тебя так делать научил?
 

PHProgress

Новичок
Т.е. как мне надо повторно передать объект в функцию?
Я в курсе, что теряю объект...
Но как правильно передать?
 

dimagolov

Новичок
PHProgress, танцы с регулярками неуместны.
берешь, делаешь СВОЙСТВО у картинки, в которое прописываешь прозрачность, изменяешь его и на его основе меняешь стиль. учти, что для FF и IE нужно по-разному задавать прозрачность (можно одновременно и так и так, "свое" представление браузер подхватит.

Ну а устанавливать интервал нужно так:
PHP:
setInterval( function () { FilterAlpha(obj); }, 20 );
это называется замыкание.
ну и интервал сохранять нужно в свойство картинки но устанавливать и сохранять нужно ОДИН РАЗ, а не на каждом вызове, как ты. setInterval сам будет делать повторы вызовов, а по завершению процесса сделать clearInterval и присвоить null свойству с интервалом.
 
Сверху