0

エラーが発生する理由を理解しようとしています:

"window.opener.document.aspnetForm.formType is null or not an object".

親ウィンドウから URL 文字列を介してポップアップ ウィンドウに値を渡しています (この子ウィンドウは検索フォームです)。この値は、SharePoint フォーム フィールドの ID です (このようにする必要があるのには理由があります。値は、それが newform または editform からのものかどうかを示します)。子ウィンドウの関数 (geturlvalue()) を使用して、url 文字列で取得した値から変数 formType を宣言しています。

var formType = geturlvalue(name);

変数「formType」は子ウィンドウで正常に機能しており、ウィンドウオープナーが親ウィンドウからの正しい値を表示する前に警告します。 ctl00_m_g_004d943c_bb99_4fba_bee5_68862443b98d_ctl00_ctl04_ctl18_ctl00_ctl00_ctl04_ctl00_ctl00_TextField

子ウィンドウのオープナーは次のとおりです。

window.opener.document.aspnetForm.formType.value = document.getElementById('Server').value;

オープナーは、サーバーの ID を持つ子ウィンドウ フィールドの値から、親ウィンドウの入力フィールドに入力する必要があります。

なぜformTypeでエラーが発生するのか、誰にも分かりますか? formType の代わりにオープナーに追加ctl00_m_g_004d943c_bb99_4fba_bee5_68862443b98d_ctl00_ctl04_ctl18_ctl00_ctl00_ctl04_ctl00_ctl00_TextFieldすると、正常に機能し、親入力フィールドにデータが入力されます。

window.opener.document.aspnetForm.ctl00_m_g_004d943c_bb99_4fba_bee5_68862443b98d_ctl00_ctl04_ctl18_ctl00_ctl00_ctl04_ctl00_ctl00_TextField.value = document.getElementById('Server').value;

4

2 に答える 2

2

親ウィンドウの要素の ID のように見えるformTypeので、この場合は次のようなコードが必要です。

window.opener.document.getElementById(formType).value = document.getElementById('Server').value;
于 2013-01-16T14:01:00.077 に答える
0

あまり詳細な質問ではありませんが、とにかく試してみてください。

私はあなたの行に本当に混乱しています:

window.opener.document.aspnetForm.formType.value = document.getElementById('Server').value;

それは何ですか ?

使用する場合は、フォームに name="aspnetForm" (ID ではない) があることを確認してください。

window.opener.document.aspnetForm

使用する場合は、フォーム要素に name="formType" (id ではない) があることを確認してください。

window.opener.document.aspnetForm.formType.value = ...

var formType が wi​​ndow.opener.document の一部であることをどのように期待しているのか疑問に思いますが、おそらくコードの他の場所ですべてのものを定義しているので、他の人がプログラムで何が起こっているかを理解できるように、もう少しコードを投稿する必要があります.

于 2013-01-16T13:25:21.550 に答える