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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переменную из литерала 
:(
    Опции темы
ANDeath
Дата 31.7.2006, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Люди, подскажите как на js создать переменную с именнем выдраным из строкового значения другой переменной.
На php это выглядело бы так: $$str 
PM MAIL   Вверх
Burrr
Дата 31.7.2006, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Используй метод eval():
Код
var parentVar = "newVarName";
eval("var " + parentVar + "='forAlert';");
alert(newVarName);
  

Это сообщение отредактировал(а) Burrr - 31.7.2006, 12:22


--------------------
PM MAIL ICQ   Вверх
vasac
Дата 31.7.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

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



Код

window[ nameVar ] = valVar;


Глобальные переменные — свойства объекта window. 
PM WWW   Вверх
ANDeath
Дата 31.7.2006, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Благодарю, помогло...хоть в итоге и решил просто функцией возвращать необходимые данные...
И тут еще вопрос: а можно ли возвращать из функции object Document или object HTMLElement?
или только переменные, да массивы, как написано в моих древних пособиях по js?
или можно это как-нибудь через адресацию провернуть? (пробовал кстати, не получилось) 
PM MAIL   Вверх
vasac
Дата 1.8.2006, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

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



Можно.
Без разницы что возвращать, практически все переменные в js — объекты, а возвращается просто ссылка на них.
PM WWW   Вверх
ANDeath
Дата 1.8.2006, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ладно, тогда приведу напрямую пример кода...может кто заметит ошибку, со стороны оно виднее:
Код

function requestAjaxSimple(XHReqObj, url, contents)
{
  if (XHReqObj.readyState == 4) XHReqObj.abort();
  XHReqObj.open("GET", url, false);
  XHReqObj.onreadystatechange = function()
    {
      if (XHReqObj.readyState == 4)
        if (XHReqObj.status == 200)
        {
          if (contents == 1) return XHReqObj.responseText;
          else return XHReqObj.responseXML;
        }
        else requestError(XHReqObj.status);
    }
  XHReqObj.send(null);
}

далее вызываю и использую эту функцию:
Код

  root = requestAjaxSimple(req2, "data2.xml?rand=" + Math.random(), 0);
  alert(root);
  var but = document.getElementById("I_button");
  var f_dis = root.getElementsByTagName("display")[0].firstChild.data;
  if (f_dis == "yes") but.value = root.getElementsByTagName("name")[0].textContent;
  else but.className = "hidden";*/

Вот. Насколько я понял, функция у меня ничего толкового не возвращает, ибо сиснтаксический анализатор Оперы выдает ошибку: типа root это не объект, плюс в теле самой функции все тоже самое работает прекрасно...
И как тут быть незнаю, подскажите пожалуйста...
PM MAIL   Вверх
vasac
Дата 1.8.2006, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

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



А что она должна возвращать? Покажи мне хотябы один return в ней? 
PM WWW   Вверх
ANDeath
Дата 1.8.2006, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



vasac, с твоей стороны это смахивает на сарказм, но все-таки: см. 10-11 строки....
PM MAIL   Вверх
vasac
Дата 1.8.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

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



Это не тот ретурн. Это ретурн в локальной анонимной функции, назначаемой обработчиком события.
Функция requestAjaxSimple() не возвращает ничего.

Что ты вообще хочешь из нее получить?

Добавлено @ 21:16 
Как я понимаю, хочешь получить результат запроса. При асинхронном запросе этого не получится. 
Так как функция requestAjaxSimple() только отправляет запрос, а когда придет ответ (и придет ли вообще), этого никто не знает.
Так что обработку полученного значения нужно делать, как раз в той функции, которую вешаешь на onreadystatechange.
Либо делать синхронный запрос, но им можно повесить браузер.
PM WWW   Вверх
ANDeath
Дата 2.8.2006, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Все въехал! vasac, ты прав на сто балов! про ананимную функцию, я не доглядел...
Про асинхронность я в курсе...там в функции open я передаю третим параметром false, а это (если конечно мне не изменяет память) означает, что скрипт будет приторможен пока не придет ответ с сервера (т.е. запрос синхронный)
Повесить браузер наверное можно) но слава мне, я написал еще парочку функций для обоих видов запроса, что-то вроде интерфейса для себя...
Попробую использовать переменные объявленые на уровне функции requestAjaxSimple()...:
Код

//уровень функции requestAjaxSimple
...
var str;
...
//уровень ананимной функции
str = XHReqObj.responseText;
...
//уровень функции requestAjaxSimple
return str;

Все работает!) всем спасибо...

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


 




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


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

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