2011-11-29 52 views
1

我有4个变量包含4个不同的字符串。我想使用for-loop来创建表格,并将字符串应用到单元格中。通过我的代码,我得到了“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); 
+0

我真的怀疑这是否有效。什么是[k]? – FailedDev

回答

3

尝试window['content' + k]代替,但也认真考虑改变你的设计,所以你不需要变量变量。他们是一个可怕的怪物,并导致接下来不可能调试的代码。

在最低限度,切换到使用的数组:

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

alert(content[1]); // outputs Text1 
1

是。

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

创建一个数组应该工作的内容。

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); 
1

对于这个特定的情况下,你可以使用和数组来保存你的字符串:

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

后来

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

另一个非常不推荐的选项是评估代码:

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

This will wor但有风险,一般都很脆弱。

0

由于这是功课这里是一些食物虽:

把所有的变量在“内容”阵:

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

然后遍历它和访问它像content[i]

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

希望它有帮助:)