Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2013, 19:29   #1
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию timeout в Объекте работает "не правильно" - нет так как задумано

Всем привет.

При вызове тайм-аута в нутри объекта он почему-то отрабатывает все сразу, без заданной задержки.

Должно быть так, в DIV=1 записывается значение 5. потом. 4,3,2,1

А он записывает стразу 1. как бы не обращая внимания на setTimeout();

Не пойму в чем дело, и так попробовал и сяк, какие только варианты не попробовал.

Наверное тут есть какой-то "подводный камень". В чем тут может быть проблема ?

=================================== =============
PHP код:
var trowNewObject = function(){
    
//this.id = id;
}
trowNewObject.prototype.nextAnimFrame = function(elementIdanimFrames){
    
this.id elementId;
    
this.animFrames animFrames;

    if(
this.animFrames 0){
        
// Записываю в элемент ID=1 номер кадра
        
document.getElementById(this.id).innerHTML this.animFrames//this.id;//xxx;//this.first;
        
this.animFrames--;
        
// Вызываю timeout 
        
setTimeout(this.nextAnimFrame(this.idthis.animFrames), 3000);
    }
}
/* ------------------------------- */

function trowObject(element){ // div id
    
var elementId element.id;
    var 
animFrames 5;// Всего кадров в "анимации"
    
var = new trowNewObject();
        
x.nextAnimFrame(elementIdanimFrames);

<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 27.09.2013 в 19:32.
pompiduskus вне форума Ответить с цитированием
Старый 27.09.2013, 20:02   #2
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Есть ответ.

Проблема была в том, что при запуске setTimeout контекст this меняется на window.
Значит, прежде чем передавать любые аргументы их нуже перевести из "THIS" в простую локальную или глобальную

Также нужно вызывать нужные метод в функции.

setTimeout(function(){that.nextAnim Frame(id, animF);}, 1000);
=================================== ===================
Решение.

PHP код:
var trowNewObject = function(){
    
//this.id = id;
}
trowNewObject.prototype.nextAnimFrame = function(elementIdanimFrames){
    var 
id elementId;
    var 
animF animFrames;

    var 
that this;

    if(
animF 0){
        
// Записываю в элемент ID=1 номер кадра
        
document.getElementById(id).innerHTML animF;
        
animF--;
        
// Вызываю timeout 
        
setTimeout(function(){that.nextAnimFrame(idanimF);}, 1000);
    }
}
/* ------------------------------- */

function trowObject(element){ // div id
    
var elementId element.id;
    var 
animFrames 5;// Всего кадров в "анимации"
    
var = new trowNewObject();
        
x.nextAnimFrame(elementIdanimFrames);

<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 27.09.2013 в 20:05.
pompiduskus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает кнопка "нет"!!!SOS!!! Нюся Microsoft Office Access 2 20.01.2011 08:03
Как работает system("copy \"C:\\1\"")? Alena-b-v Общие вопросы C/C++ 4 01.09.2010 17:27
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
если >30 тогда "да" иначе "нет"... DBgrid Daur БД в Delphi 4 30.05.2010 16:54
Нет в русском языке "ложит", есть - "кладет". mihali4 Свободное общение 25 01.04.2008 11:19