Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить имя переменной как строку 
:(
    Опции темы
nerdy_weirdie
Дата 16.9.2010, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



У меня появилась необходимость собрать большие объемы отладочных данных из javascript. Для этого удобнее всего собирать их в виде xml. Подскажите пожалуйста наиболее элегантный способ генерить этот хмl. Задача в том чтобы записывать туда некоторые наборы переменных. Например можно ли сделать функцию с переменным числом аргументов, чтобы параметрами были просто любые переменные в неопределенном количестве, и по ним автоматом генерился xml?
var myvar1="Quick";
var myvar8="brown";
var myvar5="fox";
var mwvar3="jumps";
var myvarx="over";
MyDbgLog( myvar1, myvar8, myvar5, mwvar3, myvarx);

И на выходе получалась строка "<myvar1>Quick</myvar1><myvar8>brown</myvar8><myvar5>fox</myvar5><mwvar3>jumps</mwvar3><myvarx>over</myvarx>"

как сделать такую MyDbgLog ?
PM MAIL   Вверх
CruorVult
Дата 16.9.2010, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



Передавать объект:
Код

MyDbgLog( {'myvar1':'Quick', 'myvar8':'brown',...});
function MyDbgLog(obj) {
var xml = "";
for(var i in obj) {
xml+= "<"+i+">"+obj[i]+ "</"+i+">";
}
return xml;
}


Это сообщение отредактировал(а) CruorVult - 16.9.2010, 09:47
PM MAIL Skype   Вверх
nerdy_weirdie
Дата 16.9.2010, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



С этими скобками, кавычками, двоеточиями, и дублированием имен переменных от функции нет никакого профита. Может есть поэлегантнее способ? Шаблоны какие или макросы?
PM MAIL   Вверх
bars80080
Дата 16.9.2010, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 15
Всего: 315



Цитата(nerdy_weirdie @  16.9.2010,  14:40 Найти цитируемый пост)
С этими скобками, кавычками, двоеточиями, и дублированием имен переменных от функции нет никакого профита

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

Цитата(nerdy_weirdie @  16.9.2010,  14:40 Найти цитируемый пост)
Шаблоны какие или макросы? 

вам javascript нужен или на другом языке?
PM MAIL WWW   Вверх
nerdy_weirdie
Дата 16.9.2010, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



Просто хотелось бы собирать данные просто написав переменные через запятую, это экономило бы уйму времени ибо операция будет производиться несметное количество раз. Да, JS нужен, всегда в языках есть какие-то возможности о которых не знаешь, потому такое и спрашиваю. 
Сделал пока что как массив, через запятую в кавычках, всёж лучше чем объект. Вот бы только еще от кавычек избавиться.

Это сообщение отредактировал(а) nerdy_weirdie - 16.9.2010, 20:13
PM MAIL   Вверх
magelan
Дата 16.9.2010, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 5.4.2010

Репутация: 2
Всего: 16



Так не подойдет?

Код

var s = {};

s.myvar1 = 'Quick';
s.myvar8 = 'brown';
s.myvar5 = 'fox';
s.myvar3 = 'jumps';
s.myvarx = 'over';


функцию для вывода этого CruorVult уже написал.

теоретически можно извратится, как Джон Ресиг и сказать s = window, но я бы не советовал.
PM MAIL   Вверх
skyboy
Дата 16.9.2010, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



из функции выяснить, какое имя у переменной, переданной в качестве аргумента - невозможно.
по крайней мере, кроссбраузерно. а неопределенное количество аргументов можно перебрать через arguments:
Код

(function() {
  for(var i = 0; i< arguments.length; i++) {
    console.log(arguments[i]);
  }
 })
 (1, '4', [4,5], {a: 'b'});

но тогда вытянуть информацию об "имени" не получится.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1024 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.