Переменная как название массива

190
16 июня 2018, 06:20

Можно ли как-нибудь задать название массива значением переменной?

Проблема вообще в том,что мне нужно сделать нормальную нумерацию и идентификаторы полей созданных вот такой функцией :

function AddItem1(dob) {
    iddob = dob.id;
    n = parseInt(iddob.substr(3));
    k++;
    var div=document.getElementById("pole"+n);
    trs = document.createElement("TR");
    trs.setAttribute("align", "center");
    tdnazvpole = document.createElement("TD");
    tdnazvpole.setAttribute("align", "right");
    tdnazvpole.setAttribute("class", "white1");
    tdpoletest = document.createElement("TD");
    tddelbutpoletest = document.createElement("TD");
    tdnazvpole.innerHTML = "Поле "+n+ k +""; //Вывод нумерации поля
    tdpoletest.innerHTML = '<TEXTAREA required cols="10%" Rows="1"  id="na['+k+']" Name="nazva['+k+']" Maxlength="200"class="inputform"></TEXTAREA>'; //Вывод поля
    tddelbutpoletest.innerHTML='<BUTTON type="button" id="del'+k+'"Value="' + k + '" style="height:25px; font-size:10px; line-height:1;" onClick="delRowTes(this)">-</BUTTON>'; //Вывод кнопки "Удалить"
    trs.appendChild(tdnazvpole);
    trs.appendChild(tdpoletest); //вывод форм
    trs.appendChild(tddelbutpoletest);
    div.appendChild(trs);
}

До этой функции создаётся кнопка +,которая и вызывает функцию,передавая ей свой параметр. Вся загвоздка в том,что при создании полей в разных div нумерация идёт не отдельно,а продолжается из одного в другой.

Answer 1

Есть несколько решений.

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

a[varName]

Если нужна именно переменная, то в зависимости от того переменная локальна или глобальна, у вас есть несколько вариантов:

window[varName]

для глобальных и

eval(varName)

для локальных, но это не очень безопасно, и ни в коем случае не должно использоваться, если varName вы не контроллируете. Вообще этот способ лучше никогда не использовать, а просто знать о том, что он есть.

Answer 2

Если переменная глобальная (или метод объекта):

window[nameVar] = [];

Если локальная - без eval никак.

READ ALSO
background url не работает правильно

background url не работает правильно

image_url получаю из json но при загрузке к данному пути в начале прибавляется путь самого html файла

156
Возможно ли присвоить на одну кнопку добавление и удаление класса?

Возможно ли присвоить на одну кнопку добавление и удаление класса?

Я пытаюсь оформить мобильную версию сайдбара

180
Проблем с созданием массива jquery

Проблем с созданием массива jquery

не могу понять как правильно записать данные в массив и вывести ихПеребираю форму, хочу записать в массив значения,пример:

203
Перегрузка метода в чужом классе в Javascript

Перегрузка метода в чужом классе в Javascript

Есть код стороннего разработчика: Typescript, AngularВ этом коде нужно откорректировать формат вывода некоторых не примитивных данных, представленных...

176