Динамическое создание имени переменной в javascript - как?

Статус
В этой теме нельзя размещать новые ответы.

Nafania

Профессор
Регистрация
24 Мар 2007
Сообщения
167
Реакции
46
Я яваскрипт знаю очень плохо. И вот понадобилось создать переменную, имя которой должно присваиваться динамически, то есть например вот так.
Есть некий массив а, допустим он имеет размер в 2 элемента, значит мне нужно создать две переменных, имена которых будут z0 и z1 соотвественно.
Естественно я делаю так (ибо см. первое предложение)
Код:
for (var i=0;i<а.length;i++) {
var zi = 'zzzz';    
}
И это совершенно неверно и не работает.

Тогда я делаю так
Код:
for (var i=0;i<а.length;i++) {
var 'z' + i = 'zzzz';    
}
И это тоже фигня, выдающая ошибку

Я решил, что я самый хитрый и сделал вот так (знатоки ява-скрипт - следующий код вам лучше пропустить, иначе, я боюсь что вы меня разорвете :)
Код:
for (var i=0;i<а.length;i++) {
var zzz = new String("z" + i + "= 'zzzz';");
eval (zzz);
}
но и это не сработало.

Как же решить сию проблему?
 
Я не помню, можно ли в жабаскрипте задавать динамические имена переменных или нет, но можешь попробывать решить задачу через массив. Что-то типа такого:

Код:
var z = new Array();

for (var i=0; i < а.length; i++)
{
     z[i] = i;
}

Ну и потом обращение к массиву по индексу - z[0], z[1] ... z[n].
 
Посмотри в сторону eval - может оно тебе и надо?
 
Я не помню, можно ли в жабаскрипте задавать динамические имена переменных или нет
И всё. Раз не помните, то не пишите. Если бы мне нужны были массивы, то я бы про них и спрашивал.

Посмотри в сторону eval - может оно тебе и надо?
В первом сообщение есть пример с eval, он не рабочий.
 
И всё. Раз не помните, то не пишите. Если бы мне нужны были массивы, то я бы про них и спрашивал.

Эх, что за народ... Вам ехать или шашечки?

Код:
for (var i = 0; i < а.length; i++) {
     eval('var z'+i+' = "zzzz"');    
}

Про eval не писал, потому что eval - ЭТО ЗЛО. Но вам понятно важнее шашечки...
 
Про eval не писал, потому что eval - ЭТО ЗЛО. Но вам понятно важнее шашечки...
Мне важнее ехать.
Я знаю, что такое массивы и знаю как с ними работать и знаю, что они значительно удобнее и правильнее в моем случае.
Но, мне нужен был именно такой вариант, как я спросил.
Спасибо за помощь - проблема решена.

ЗЫ куда, кстати, кнопка "спасибо" делась?
 
  • Заблокирован
  • #7
как решил то, поделись - у меня давеча такая же проблема была..
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху