0

I have two variable and one function.

<script> 

function myfunction(a1,a2,a3)
{
    alert(a1+a2+a3)
}

var fname="myfunction";
var fdata="data1,data2,data3";

</script>

I want to call function from variable values. like this

myfunction('data1','data2','data3')

I know how to call function from variable value.

window[fname](); //this call myfunction()

But don't know how to call function with multiple arguments from variable values?

Give me a solution if you can!

4

3 回答 3

3

首先,您不必使用函数的名称来保留对它的引用。直接使用函数即可:

var fname = myfunction;

然后你可以调用它:

fname('whatever');

要从该字符串传递参数,您必须将它们从字符串中取出,这个过程将取决于您首先如何将这些值组合成一个字符串。在您的示例中,您可以用逗号分割字符串以创建一个数组,然后使用.apply()

fname.apply(null, fdata.split(','));

.apply()方法接受一个数组作为第二个参数(第一个参数是用于 的值this),然后调用函数以使参数的值是数组的元素。

于 2013-10-19T17:37:39.080 回答
1

只需在括号之间添加参数

window[fname]('data1', 'data2', 'data3');

要使用该fdata值动态传递参数,您应该使用apply(如@Pointy 建议的那样)。

window[fname].apply(null, fdata.split(','));
于 2013-10-19T17:39:19.953 回答
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>

我希望它有所帮助。

于 2013-10-19T18:55:03.087 回答