1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

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

Тема в разделе "Web Coding", создана пользователем Nafania, 19 ноя 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Nafania

    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);
    }
    но и это не сработало.

    Как же решить сию проблему?
     
  2. mp3debuger

    mp3debuger

    Регистр.:
    27 дек 2006
    Сообщения:
    184
    Симпатии:
    105
    Я не помню, можно ли в жабаскрипте задавать динамические имена переменных или нет, но можешь попробывать решить задачу через массив. Что-то типа такого:

    Код:
    var z = new Array();
    
    for (var i=0; i < а.length; i++)
    {
         z[i] = i;
    }
    
    Ну и потом обращение к массиву по индексу - z[0], z[1] ... z[n].
     
  3. biophreak

    biophreak Создатель

    Регистр.:
    14 авг 2007
    Сообщения:
    11
    Симпатии:
    1
    Посмотри в сторону eval - может оно тебе и надо?
     
  4. Nafania

    Nafania

    Регистр.:
    24 мар 2007
    Сообщения:
    167
    Симпатии:
    46
    И всё. Раз не помните, то не пишите. Если бы мне нужны были массивы, то я бы про них и спрашивал.

    В первом сообщение есть пример с eval, он не рабочий.
     
  5. mp3debuger

    mp3debuger

    Регистр.:
    27 дек 2006
    Сообщения:
    184
    Симпатии:
    105
    Эх, что за народ... Вам ехать или шашечки?

    Код:
    for (var i = 0; i < а.length; i++) {
         eval('var z'+i+' = "zzzz"');    
    }
    
    Про eval не писал, потому что eval - ЭТО ЗЛО. Но вам понятно важнее шашечки...
     
  6. Nafania

    Nafania

    Регистр.:
    24 мар 2007
    Сообщения:
    167
    Симпатии:
    46
    Мне важнее ехать.
    Я знаю, что такое массивы и знаю как с ними работать и знаю, что они значительно удобнее и правильнее в моем случае.
    Но, мне нужен был именно такой вариант, как я спросил.
    Спасибо за помощь - проблема решена.

    ЗЫ куда, кстати, кнопка "спасибо" делась?
     
  7. bueno

    bueno Читатель

    Заблокирован
    Регистр.:
    7 май 2007
    Сообщения:
    236
    Симпатии:
    69
    как решил то, поделись - у меня давеча такая же проблема была..
     
  8. Nafania

    Nafania

    Регистр.:
    24 мар 2007
    Сообщения:
    167
    Симпатии:
    46
    Ну вот этот https://www.nulled.cc/showpost.php?p=286102&postcount=5 код - то что надо.
     
Статус темы:
Закрыта.