任何人都可以告诉我如何使用字符串数组作为参数调用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);
}
}
传递数组变量时出现语法错误。
答案 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")