如何在javascript中将字符串值转换为变量?

时间:2009-12-12 12:33:01

标签: javascript string variables

var test1;
$(document).ready(function () {
    test1 = $("#test1ID").jQueryPlugin();
});

var test2;
$(document).ready(function () {
    test2 = $("#test2ID").jQueryPlugin();
});

...

这样做我们可以做test1.foo() ... foo是jQueryPlugin中的一个函数,可以使用test1.foo()语法访问;

所以我们有一个包含(test1,test2,...)的字符串数组 我们需要在循环中访问foo():

for(i=0; i < theArrayOfStrings.length; i++){
    theArrayOfStrings[i].foo();
    //so here is the problem... we can't do test1.foo(), test2.foo() ... =(
}

关于如何在循环中调用函数foo()的任何想法? 或者我们可以将字符串值转换为javascript中的变量吗?

5 个答案:

答案 0 :(得分:4)

创建一个对象以保存所有“测试”可能是值得的:

var tests = {};

$(document).ready(function () {
    tests.test1 = $("#test1ID").jQueryPlugin();
    tests.test2 = $("#test2ID").jQueryPlugin();
});

for(i=0; i < theArrayOfStrings.length; i++){
    tests[theArrayOfStrings[i]].foo();
}

答案 1 :(得分:2)

eval() function用于评估字符串变量中的脚本。例如:

var test1;
eval("test1=" + theArrayOfStrings[i]);
test1.foo();

但在使用When is JavaScript’s eval() not evil?

之前,请先考虑这个问题

答案 2 :(得分:1)

如果test1是全局变量,您可以通过window对象按名称访问它:

window[theArrayOfStrings[0]].foo();   // test1();

如果不是,eval是唯一的方法,但我强烈建议在所有情况下都避免使用eval。使用J-P的答案(+1)中的查找比选择变量名更合适。

答案 3 :(得分:0)

你试过吗

$('#' + theArrayOfStrings[i]).foo();

查看API/1.3/Selectors

答案 4 :(得分:0)

var test = [], n = 5;
$(document).ready(function () {
    for(var i=0; i < n; i++)
        test.push($("#test"+i+"ID").jQueryPlugin());
});

// the values in test won't be accessible before the document is loaded.