感谢您的阅读,
问题上下文:在多个折叠面板中使用spry的搜索功能。
我正在尝试使用eval (因为它是我能想到的唯一方法)来完成这件简单的事情:
var ds1 = new Spry.Data.XMLDataSet("ajaxxmllogdaneiz1.php",'root/row]');
var ds2 = new Spry.Data.XMLDataSet("ajaxxmllogdaneiz2.php",'root/row]');
var str1="ds";
var str2= 1;
var result= str1.concat(str2);
//result is now ds1
eval ("result.filter(filterFunc)");我希望调用ds1.filter(filterFunc),但调用的是result.filter(filterFunc)。有没有办法通过eval或替代方案(Jquery?)来调用ds1.filter(filterFunc)?非常感谢Dinos
发布于 2012-12-30 16:41:43
对于使用result的值而不是"result"本身,您可以这样做:
eval (result+".filter(filterFunc)");
发布于 2012-12-30 16:41:52
您应该使用以下代码:
eval(result + ".filter(filterFunc)");但你真的应该考虑根本不使用eval。我不明白为什么这会是可取的。如果必须,我建议将要操作的变量存储在一个已知的位置。例如:
var Foo = function() {
return {
"bar": function() {
console.log("baz");
}
}
};
var foo_list = {};
foo_list["foo"] = Foo();
var part_1 = "fo";
var part_2 = "o";
foo_list[part_1 + part_2].bar();fiddle
(您也可以用这种方式将其存储在window中,但我也不建议这样做。)
发布于 2012-12-30 16:42:40
如果您试图访问的变量在全局范围内,则可以使用:
var result = 'ds1';
window[result].filter(filterFunc);https://stackoverflow.com/questions/14089388
复制相似问题