繁体   English   中英

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

[英]How to convert a string value to a variable in javascript?

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中的变量?

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

var tests = {};

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

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

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

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

但是在使用之前先仔细考虑一下这个问题吧JavaScript的eval()何时不是邪恶的?

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

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

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

你有没有尝试过

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

看看API / 1.3 /选择器

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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM