Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Запуститъ переданный код внутри функции


Автор: BASILIO 16.7.2011, 18:50
Есть функция:
Код

slide = function(objname,napr,put,steps,speed,callf)
    {
    obj = document.getElementById(objname);
    switch(napr)
        {
        case 'down':
            {
            num = obj.offsetTop+steps;
            obj.style.top = num+'px';
            break;
            }
        case 'up':
            {
            num = obj.offsetTop-steps;
            obj.style.top = num+'px';
            break;
            }
        case 'left':
            {
            num = obj.offsetLeft-steps;
            obj.style.left = num+'px';
            break;
            }
        case 'right':
            {
            num = obj.offsetLeft+steps;
            obj.style.left = num+'px';
            break;
            }
        }
    newput = put-steps;
    if(newput <= 0)
        {/* ПРОБЛЕМА*/
        eval(callf);//'fade("top_menu_line_1","in",30,1,25)');//promt(callf);
        }
    else
        {
        tocall = 'slide("'+objname+'","'+napr+'",'+newput+','+steps+','+speed+')';
        setTimeout(tocall,speed);
        }
    }


Вызываю через:
Код

slide('top_menu_main_container','down',30,1,25,'fade("top_menu_line_1","in",30,1,25)');


Eсли написать в строке с проблемой просто "fade("top_menu_line_1","in",30,1,25);" то всё запуститься, а вот тоже самое но переданное аргументом не хочет ни в какую :(

Подправьте плз. код, чтобы там запускалась переданная аргументом функция. Спасибо.

Автор: нуп 16.7.2011, 19:01
Если удалть все кроме проблемной строчки, то код работает  smile 

Автор: BASILIO 16.7.2011, 19:06
нуп,  в плане работает, код передоваеммый callf не срабатывает

Автор: нуп 16.7.2011, 19:19
Код

function slide(objname,napr,put,steps,speed,callf)
   {
        eval(callf);
   }

slide('top_menu_main_container','down',30,1,25,'fade("top_menu_line_1","in",30,1,25)');

Работает!

Автор: BASILIO 16.7.2011, 20:43
нуп, а оно должно так же работать если вызываемая функция самописная и не описана внутри вызываемой?

Добавлено через 2 минуты и 7 секунд
Решил проверить через:
Код

    if(newput <= 0)
        {alert(callf);
        eval(callf);
        }
    else
        {
        tocall = 'slide("'+objname+'","'+napr+'",'+newput+','+steps+','+speed+')';
        setTimeout(tocall,speed);
        }

Выдало undefined  smile 

Автор: нуп 16.7.2011, 20:49
Ошибка в другом месте! 

Автор: BASILIO 16.7.2011, 23:41
Не смог найти где иммено, переписал полностью алгоритм, зашёл с другой стороны

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)