Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверить данные в функции, которая работает с другой функцией. (https://javascript.ru/forum/misc/31933-proverit-dannye-v-funkcii-kotoraya-rabotaet-s-drugojj-funkciejj.html)

Andrej_2 26.09.2012 18:22

Проверить данные в функции, которая работает с другой функцией.
 
Здравствуйте!

Помогите разобраться! Чувствую, что решение простое, но голова кругом идет, т.к. новичок. :)

Есть некая функция vid, которая после вызова vid(); в нужном месте поочередно выводит заданные данные путем их обработки в другой функции:

function vid()
{
nvg(a1);nvg(a2);nvg(b1);
};



Возникла специфическая задача проверить, есть ли в функции vid() задача обработать нужный параметр. Скажем, нужно найти, задавался ли на обработку параметр 'b' с любым индексом после этой буквы. Т.е. код обращения к другой функции нужно рассмотреть как строку.

Пытаюсь так:

strk = vid();

if (strk.match('b'))
{
alert ('есть такой параметр');
}

Hoshinokoe 26.09.2012 20:29

Andrej_2,
Так в переменную сохранится результат выполнения функции.
strk = vid();

Попробуй так:
strk = vid.toString();

DjDiablo 26.09.2012 23:37

забавно , а нафига это надо ?
Может можно логику приложения, изменить, всё будет по удачнее чем этот загадочный костыль.

melky 26.09.2012 23:39

Цитата:

Сообщение от DjDiablo
Может можно логику приложения, изменить, всё будет по удачнее чем этот загадочный костыль.

иногда это бувает невозможно. пример - API укоза.

Andrej_2 27.09.2012 11:37

Hoshinokoe, спасибо. Все работает.

Зачем это нужно?
Попробую объяснить вкратце. Задумал некое подобие SSI на JS, чтобы сделать движок для бесплатного хостинга (и платного, но подешевле). Есть настроичный внешний JS, в котором коротко и доступно (т.е. в виде массива без разметки) даны пункты боковых меню и подменю. Этот скрипт можно оперативно менять. (для индексации поисковиком есть еще файл со ссылками). И есть еще один внешний JS, который берет предыдущий скрипт с пунктами меню и выводит их на странице в нужной очередности, заданной как раз vid(). Там сложный вывод -- с автоподстановкой повторяющегося кода, с абсолютным позиционированием по оперативно вычисляемым координатам якорей предыдущих блоков меню и пр. А для этой конкретной задачи решил еще расширить возможности, чтобы сделать меню слева и справа. Т.е. скрипт смотрит, что прописано в функции vid() как в строке и определяет, была ли команда выводить какой-нибудь код справа -- и тогда изменяет разметку, чтобы было место и под правые блоки. Аналогично с левыми блоками. Можно, конечно, задать команду выводить конкретные блоки в виде массива, а потом функцией подставлять наименования блоков для обработки в другой функции, но решил, что так элегантнее: код короче и изменять в настройках мешьше и проще. Как-то так. Еще раз спасибо Hoshinokoe.

DjDiablo 27.09.2012 22:42

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

Что касается технологий всётаки я бы советывал применить json вместо js
посмотрите как это сделали в БЭМ http://bem.github.com/bem-method/pag...inning.ru.html
видео до кучи, в котором дама волнуется, и непонятно рассказывает о технологииhttp://events.yandex.ru/talks/169/


Решение на поиске чегото в коде функции не применимо на практике, ибо неучитывает логики внутри функции. Это сведёт с ума программиста, который будет пытаться понять, почему функция заремарена а блок справа под неё всё равно создаётся. Помимо ремарок есть циклы, условия, рекурсия, вынос кода в сторонние функции. Нельзя же просто взять и проигнорировать поток исполнения.


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