Mam 4 zmienne zawierające 4 różne łańcuchy. Chcę używać pętli do tworzenia stołu i zastosować łańcuchy do komórek. Dzięki poniższym kodem otrzymuję "Content1", "Content2" i tak dalej jako łańcuchy zamiast ciągów w zawartości zmiennych1, treści2 i tak dalej. Czy można przekonwertować struny, które są tworzone w pętli (np. "Content1") do zmiennych, jeśli tak, jak to zrobić?

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);
1
holyredbeard 30 listopad 2011, 00:04

5 odpowiedzi

Najlepsza odpowiedź

Wypróbuj window['content' + k], ale także poważnie rozważ zmianę projektu, aby nie potrzebować zmiennych zmiennych. Są straszną potwornością i prowadzą do następnego do niedostatecznego kodu.

W gare minimum przełącz się na używanie tablicy:

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

alert(content[1]); // outputs Text1
3
Marc B 29 listopad 2011, 20:07

Tak.

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);
1
Mike Christensen 29 listopad 2011, 20:08

W tym konkretnym przypadku można użyć i tablicy, aby utrzymać struny:

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

I później

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

Inną niezalecaną opcją jest ocena kodu:

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

Będzie to działać, ale ma ryzyko, a ogólnie jest łuszcząc.

1
u.k 29 listopad 2011, 20:10

Tworzenie treści jako tablicy powinna działać.

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);
0
Robert 29 listopad 2011, 20:08

Ponieważ jest to lekcja domowa, jest trochę jedzenia dla myśli:

Umieść wszystkie zmienne w tablicy "treści":

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

Następnie iteruj przez nią i uzyskaj dostęp do tego jak content[i]

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

Mam nadzieję, że to pomoże :)

0
FailedDev 29 listopad 2011, 20:10