3

JSObject を使用して Java から Javascript 関数を呼び出そうとしています。HTML テキスト フィールドを更新するには、Javascript 関数が必要です。このためには、要素 ID と値を知る必要があります。

私はこれを試しましたが、うまくいきません。Javascript からアクセスしようとすると、渡された値が空です。

私の質問は、Javascript からこれらの値にアクセスするにはどうすればよいですか? 私は何かが欠けているに違いない。

サイズ 1 のオブジェクトを宣言すると機能しますが、オブジェクト配列に 2 つの値を渡す必要があります。

前もって感謝します。

//Java code
Object[] objects = new Object[2];
objects[0] = "elementId";
objects[1] = "elementValue";
window.call("updateElement",objects);

//Javascript code
function updateElement(array){
  alert(array[0]);
  alert(array[1]);
}
4

3 に答える 3

1

そのため、JavaでObject配列を使用していて、文字列値を渡していることに気付きました。文字列配列を使用してみましたか?

String[] x = new String[2];
x[0] = "elementId";
x[1] = "elementValue";
window.call("updateElement", x);

それを試してみて、それが機能するかどうかを確認してください。私の推測では、JavaScriptは、渡されるオブジェクト配列が文字列配列であることを認識できません。私は100%確信していませんが。

于 2010-09-02T14:29:34.993 に答える
1

あなたの例では、「updateElement」に2つの引数を渡しているためalert('e')、表示されて表示されるはずです。alert('l')オブジェクトを JavaScript でいつでも使用して、arguments実際に受け取ったものを調べることができます。

この問題が発生しないように、常に最後の引数リストを個別に最後に作成することをお勧めします。彼らがJava 5で署名を更新しなかったのは、ひどい設計上の欠陥であり、JSObject.call(String, Object...)そうすれば頭痛の種ははるかに少なくなります。

よりクリーンなソリューションは次のとおりです。

// Java code
window.call("updateElement", new Object[] { "elementId", "elementValue" });

// Javascript code
function updateElement(elId, elVal){
    alert(elId);
    alert(elVal);
}

しかし、本当に JS で配列を受け取ることに固執したい場合は、次のようにします。

String[] arr = new String[] { "elementId", "elementValue" };
window.call("updateElement", new Object[] { arr });
于 2015-06-30T11:53:46.170 に答える