powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Таймер в объекте (JavaScript)
12 сообщений из 12, страница 1 из 1
Таймер в объекте (JavaScript)
    #35407636
Фотография ZeroHold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе ...
Задача: Пытаюсь создать анимацию в объекте, но так чтобы таймер работал у каждого объекта независимо. Ну типа вызвал объект.старт_анимации и забыл, но возникала проблема.

Вопрос как сделать так чтобы на JavaScript в объекте вызывался таймер
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
function sd_text_effect()
{ ...
  this.count_steps= 20 ;
  this.div_source_name='';
  ... и т.д.
  this.f_start=function()
  {... 
    this.f_anim();// вызов производится корректно
    return;
  };
  // непосредственно сама анимация
  this.f_anim=function()
  { ...
    setTimeout("this.f_anim()", 40 );<-- проблема (this.f_anim is not a function)
    return;
  }
}
var obj=new sd_text_effect();// создаем экземпляр объекта, эффекта
...
obj.f_start();// стартануть анимацию объекта

Вот вопрос как бы эту проблему исправить чтобы сделать так что бы встроить анимаюцию или что либо подобное в сам объект.
спасибо.
...
Рейтинг: 0 / 0
Таймер в объекте (JavaScript)
    #35407717
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
setTimeout в таком контексте скорее всего повесит клиента рекурсией. Нужен setInterval + замыкания для передачи в него параметров. Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function sd_text_effect()
{ 
  var oThis = this;
  this.f_start=function()
  {
    setInterval(function(oAnim){return function(){oAnim.f_anim();}}(oThis), 40 );
  };
  this.f_anim=function()
  {
    //бла-бла-бла...
  };
}
...
Рейтинг: 0 / 0
Таймер в объекте (JavaScript)
    #35407724
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя нет, наврала, не вешает. Так что делаем проще:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function sd_text_effect(id){
  var oThis = this;
  this.f_start=function()
  {
	oThis.f_anim();
  };
  this.f_anim=function()
  {
	//.....
	setTimeout(oThis.f_anim,  40 );
  };
}
...
Рейтинг: 0 / 0
Таймер в объекте (JavaScript)
    #35408674
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
illionхотя нет, наврал а
illion, ты тетке? o_O
...
Рейтинг: 0 / 0
Таймер в объекте (JavaScript)
    #35408691
Фотография ZeroHold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первый пример робит отлично,
но второй не хочет.
Честно говоря логику данного действа не понял. Объясните?
Да понимаю работает, но блин не люблю когда не понимаю сути
...
Рейтинг: 0 / 0
Таймер в объекте (JavaScript)
    #35409406
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про суть того, что в первом примере, можно почитать в первую очередь здесь + гугл (javascript замыкания).
Но в данном случае это не понадобится.
Почему не работает второй пример (какая ошибка возникает)? f_anim находится в пределах области видимости переменной oThis, и проблем с объектом быть не должно. Тестовый рабочий (проверено) пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<div id='q' style="width:100px; float:left;"></div>
<div id='w' style="width:100px; float:left;"></div>
<script>
function sd_text_effect(id){
  var oThis = this;
  this.id = id;
  this.f_start=function()
  {
	oThis.f_anim();
  };
  this.f_anim=function()
  {
	document.getElementById(oThis.id).innerHTML += 'qwert<br>';
	setTimeout(oThis.f_anim,  40 );
  };
}
var obj=new sd_text_effect('q');
obj.f_start();
var obj2=new sd_text_effect('w');
obj2.f_start();
</script>
...
Рейтинг: 0 / 0
Таймер в объекте (JavaScript)
    #35409410
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а еще интересно - попробовала setInterval вместо setTimeout использовать (все-таки он по логике больше подходит). В опере и ие внешне никаких отличий, а вот фф стал выдавать строки "qwert" пачками.
...
Рейтинг: 0 / 0
Таймер в объекте (JavaScript)
    #35409958
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IE вызывает функии по таймеру. Если интерпретатор занят - ничего не вызывается и вызов пропускается..
FF стаит по таймеру вызов в очередь. после освобождения интерпретатора функции вызываются подряд.
...
Рейтинг: 0 / 0
Таймер в объекте (JavaScript)
    #35409964
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZeroHoldПервый пример робит отлично,
но второй не хочет.
Честно говоря логику данного действа не понял. Объясните?
Да понимаю работает, но блин не люблю когда не понимаю сути

Во втором примере Вам ф функии не следует применять this. Вместо него только oThis
...
Рейтинг: 0 / 0
Таймер в объекте (JavaScript)
    #35410218
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы illionхотя нет, наврал а
illion, ты тетке? o_O
гхм, да, так вот, я все о своем, о спермотоксикозе :)
раз illion судя по всему девушко, то выскажу от неожиданности уважуху, ибо в своей практике я мало встречал людей, понимающих в html/javascript выше уровня задаваемых тут вопросов, а девушек не встречал вообще :)
...
Рейтинг: 0 / 0
Таймер в объекте (JavaScript)
    #35410312
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зыгхм, да, так вот, я все о своем, о спермотоксикозе :)
Вроде, как - ты не первый раз на хорум зашёл. Она - здесь лучшая. А ты чё - посты не читаешь что-ли?
...
Рейтинг: 0 / 0
Таймер в объекте (JavaScript)
    #35410378
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я просто не все посты читаю :) времени нет :(
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Таймер в объекте (JavaScript)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]