为什么我只从Silverlight传递的Javascript数组中获得第一个元素?

时间:2010-10-19 00:41:37

标签: javascript silverlight arrays

我正在尝试将一个字符串数组从Silverlight应用程序传递给Javascript函数。但是我似乎只得到数组的第一个元素,而不是整个数组。我用下面的简单代码复制了它:

Silverlight的:

 string[] Names = new string[5];
 Names[0] = "Test1";
 Names[1] = "Test2";
 Names[2] = "Test3";
 Names[3] = "Test4";
 Names[4] = "Test5";

 HtmlPage.Window.Invoke("PopulateNames", Names);

使用Javascript:

function PopulateNames(names)
{
    window.alert(names);
}

在这种情况下,我只看到带有上述代码的“Test1”,或者如果我用window.alert(names [0])替换window.alert(名称),则为“undefined”。

有谁知道我应该怎么做才能将所有元素都输出到Javascript函数?

2 个答案:

答案 0 :(得分:3)

Invoke method采用一系列参数 因此,您的五个字符串将作为五个字符串参数传递给函数。

您需要传递一个嵌套数组,如下所示:

HtmlPage.Window.Invoke("PopulateNames", new object[] { Names });

答案 1 :(得分:2)

javascript函数对象还有另一个属性。它的论点。您可以访问通过此arguments对象传递的完整对象数组。尝试调试你的脚本,你就会明白我说的话。如果访问函数的参数数组,如'funcation(myargs[])',则myargs将引用传入数组中的第一个值。