可以将字符串转换为变量吗?

时间:2011-11-29 20:04:41

标签: javascript string variables

我有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 个答案:

答案 0 :(得分:3)

请尝试window['content' + k],但也要认真考虑更改设计,这样就不需要变量变量了。它们是一个可怕的怪物,并导致接下来不可能调试的代码。

至少,切换到使用数组:

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

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

答案 1 :(得分: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);

答案 2 :(得分: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);

这会有效,但有风险,而且一般都是不稳定的。

答案 3 :(得分: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);

答案 4 :(得分:0)

因为这是家庭作业,所以这里有一些食物:

将所有变量放在“内容”数组中:

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

然后迭代它并像content[i]

一样访问它
for (var i = 0; i < content .length; i++){...}

希望有所帮助:)