Конвертировать строку в переменную, возможно? - PullRequest
1 голос
/ 30 ноября 2011

У меня есть 4 переменные, содержащие 4 разные строки.Я хочу использовать цикл for для создания таблицы и применять строки в ячейках.С моим кодом ниже я получаю «content1», «content2» и так далее в виде строк вместо строк в переменных content1, content2 и так далее.Можно ли преобразовать строки, созданные в цикле (например, "content1"), в переменные, если да, как мне это сделать?

var content1 = "Text1";
var content2 = "Text2";
var content3 = "Text3";
var content4 = "Text4";

for (var i = 1; i < 5; i++){        
    var td = document.createElement('td');
    var text = document.createTextNode("content" + [k]);
    td.appendChild(text);
    tr.appendChild(td);
}

table.appendChild(tr);

Ответы [ 5 ]

3 голосов
/ 30 ноября 2011

Попробуйте window['content' + k] вместо этого, но также серьезно подумайте об изменении вашего дизайна, чтобы вам не нужны переменные переменные.Они ужасно чудовищны и приводят к тому, что код, который почти невозможно отладить.

Как минимум, переключитесь на использование массива:

content = ['', 'Text1', 'Text2', 'Text3', 'Text4']; // empty string to fill in the '0' element

alert(content[1]); // outputs Text1
1 голос
/ 30 ноября 2011

В этом конкретном случае вы можете использовать и массив для хранения ваших строк:

var content = ['Text1', 'Text2', 'Text3', 'Text4'];

и более поздних

var text = document.createTextNode(content[i+1]);

Еще один очень не рекомендуемый вариант - оценить код:

eval("var text = content" + (i+1));
var text = document.createTextNode(text);

Это сработает, но сопряжено с рисками и в целом неэффективно.

1 голос
/ 30 ноября 2011

Да.

var content = ["Text1", "Text2", "Text3", "Text4"];

for (var i = 0; i < content.length; i++){        
    var td = document.createElement('td');
    var text = document.createTextNode( content[i] );
    td.appendChild(text);
    tr.appendChild(td);
}

table.appendChild(tr);
0 голосов
/ 30 ноября 2011

Так как это домашнее задание, вот немного еды для:

Поместите все свои переменные в массив содержимого:

var content = new Array("Text1", "Text2" ...);

Затем переберите его и получите к нему доступ content[i]

for (var i = 0; i < content .length; i++){...}

Надеюсь, это поможет:)

0 голосов
/ 30 ноября 2011

Создание контента в виде массива должно работать.

var content = new Array();

content[0] = "Text1";
content[1] = "Text2";
content[2] = "Text3";

for (var i = 1; i < 5; i++){        
    var td = document.createElement('td');
    var text = document.createTextNode("content" + content[k]);
    td.appendChild(text);
    tr.appendChild(td);
}

table.appendChild(tr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...