如何使用字符串数组调用javascript函数

时间:2015-05-04 11:43:51

标签: javascript c# arrays

任何人都可以告诉我如何使用字符串数组作为参数调用javascript函数以及如何在被调用函数中使用此数组。 这是我的代码:

C#代码

for (int i = 0; i < count; i++)
{
    array1[i] = dt.Rows[i]["FieldName"].ToString();
    array2[i] = dt.Rows[i]["FieldValue"].ToString();
}
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"Javascript", "<script type='text/javascript'>myFunction('" + count + "','" + array1 + "','" + array2 + "');</script>");

的JavaScript

function myFunction(cnt, arr1, arr2)
{
    for (i = 0; i < cnt; i++)
    {
        alert("fname" + arr1[i] + " :fvalue " + arr2[i] + " :count:" + cnt);
    }
}

传递数组变量时出现语法错误。

2 个答案:

答案 0 :(得分:2)

您可以在此处使用javascript的apply方法并使用 arguments 变量并将其视为数组的来源,从而避免混乱&#39; args&#39;在你的方法上。然后,您可以传递一个字符串,如:

 //After ensuring all elements in array1 are wrapped in ' characters or are appropriate as arguments as-is
 "myFunction.apply(this, [" + array1.join(",") + "])".

这种方式&#34; myFunction&#34;将处理任意数量的参数或(使用javascript参数对象)任何大小的数组。无需通过&#39;计算&#39;变量。然后myFunction可以写成:

 function myFunction() {
     for (var j = 0, len = arguments.length; j < len; j++) {
         var a = arguments[j];
         //do something with a
     } 
 }

答案 1 :(得分:1)

  

如何使用字符串数组调用javascript函数

this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"Javascript", "<script type='text/javascript'>myFunction('" + count + "','[" +string.Join(",", array1) + "]','[" + string.Join(",", array2)+ "]');</script>");

nb:您可以通过以下方式保存脚本标记:

this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"Javascript", "myFunction('" + count + "','[" +string.Join(",", array1) + "]','[" + string.Join(",", array2)+ "]');",true);

此外,您一次又一次地添加相同的密钥(“Javascript”):

尝试添加guid:

"Javascript"+Guid.NewGuid().ToString("n")