我有两个变量和一个函数。
<script>
function myfunction(a1,a2,a3)
{
alert(a1+a2+a3)
}
var fname="myfunction";
var fdata="data1,data2,data3";
</script>
我想从变量值调用函数。像这样
myfunction('data1','data2','data3')
我知道如何从变量值调用函数。
window[fname](); //this call myfunction()
但是不知道如何使用变量值中的多个参数调用函数?
如果可以的话,给我一个解决方案!
答案 0 :(得分:3)
首先,您不必使用函数的名称来保持对它的引用。只需直接使用该功能:
var fname = myfunction;
然后你可以打电话给它:
fname('whatever');
要从该字符串传递参数,您必须将它们从字符串中取出,这个过程将取决于您首先将值组合成字符串的过程。在您的示例中,您可以在逗号上拆分字符串以创建数组,然后使用.apply()
fname.apply(null, fdata.split(','));
.apply()
方法接受一个数组作为第二个参数(第一个是用于this
的值),然后调用该函数,使得参数的值是数组。
答案 1 :(得分:1)
只需在括号之间添加参数
window[fname]('data1', 'data2', 'data3');
要使用fdata
值动态传递参数,您应该使用apply
(如@Pointy建议的那样)。
window[fname].apply(null, fdata.split(','));
答案 2 :(得分:0)
你可以修改你的代码:
<script type="text/javascript">
function myfunction(a123) {
// remove the coma if you don't want it.
var completeData = a123.replace(/,/g, "");
alert(completeData);
}
var fname = "myfunction";
var fdata = "data1,data2,data3";
window[fname](fdata);
</script>
我希望它有所帮助。