如何选择数组中的元素?

时间:2013-11-11 01:32:16

标签: javascript winforms c#-4.0 awesomium

为Windows窗体使用Awesomium .net。

我的代码 - behinde调用java脚本函数传递参数(JSValue)。

JSValue[] args = new JSValue[args2.Length];

for (int i = 0; i < args2.Length; i++)
{
args[i] = args2[i].ToString();
}

JSObject js_obj = webControl1.ExecuteJavascriptWithResult("window");
//args has all my 35 elements.
js_obj.Invoke("addTheseElements", args);

REFERENCE http://docs.awesomium.net/html/M_Awesomium_Core_JSObject_Invoke.htm http://answers.awesomium.com/questions/784/calling-a-javascript-method-with-parameters.html

我的HTML页面

<script>

function addTheseElements(args) {

alert(args);
//returns element1

alert(args[0]);
//returns e

alert (args.length) 
//returns 8 (element1)

}

</script>

问题是我无法选择数组中的第二个元素。我如何访问它?我做错了什么?

Structure of JSValue. Available properties and methods

2 个答案:

答案 0 :(得分:0)

好吧我不确定这是否是正确的方法,但事实证明我需要传递的第二个参数是JSValue对象而不是JSValue []。

所以我的工作答案是

        JSValue[] args = new JSValue[args2.Length];

        for (int i = 0; i < args2.Length; i++)
        {
            args[i] = args2[i].ToString();

        }

        JSValue args3 = args;

        JSObject js_obj = webControl1.ExecuteJavascriptWithResult("window");

        js_obj.Invoke("addTheseElements", args3);

但是文档中给出的语法是

public JSValue Invoke(
    string methodName,
    params JSValue[] args
)

REF http://docs.awesomium.net/html/M_Awesomium_Core_JSObject_Invoke.htm

如果有人发现这里发生了什么,请随时解释。

干杯。

答案 1 :(得分:0)

尝试更改此内容:

args[i] = args2[i].ToString();

要:

args[i].push_back(args2[i].ToString());
在通过之前

这样就会变成:

JSValue[] args = new JSValue[args2.Length];

for (int i = 0; i < args2.Length; i++)
{
 args[i].push_back(args2[i].ToString());
}

JSObject js_obj = webControl1.ExecuteJavascriptWithResult("window");

js_obj.Invoke("addTheseElements", args);