メタデータのフォームを作成するために使用される混合 XML と、すべて IE9 にアップグレードする必要があるメタデータを操作するための複雑な JavaScript を含む、ひどいレガシー HTML ドキュメントがあります。現時点では、オプション要素内にいくつかの追加の XML ノードを含む選択コントロールに問題があります。
<select id="NoOfApplicants_Q" onchange="validate_js(this);doNoOfApplicantsChange();">
<option value="" selected="true">Please select
<tla:instruction type="jscript" value="$jointApplication = false;"></tla:instruction>
<tla:instruction type="hide" value="App2Identity"></tla:instruction>
<tla:instruction type="hide" value="App2Applicant"></tla:instruction>
</option>
<option value="1">One
<tla:instruction type="jscript" value="$jointApplication = false;"></tla:instruction>
<tla:instruction type="hide" value="App2Identity"></tla:instruction>
<tla:instruction type="hide" value="App2Applicant"></tla:instruction>
</option>
<option value="2">Two
<tla:instruction type="jscript" value="$jointApplication = true;"></tla:instruction>
</option>
</select>
JavaScript を使用して tla:instruction ノードを読み取る必要があります。これにより、その後の処理を行うことができます。ただし、現在持っているコード行はノードを返しません:
instructions = control.options[control.selectedIndex].getElementsByTagName('tla:instruction');
ウォッチ ウィンドウで DOM を調べると、以下control.options[control.selectedIndex]
の要素はオプション内のテキスト要素だけです。例: 「選択してください」、「1 つ」など。
選択したオプション内から tla:instruction 要素の配列/リスト/コレクションを取得するにはどうすればよいですか?
更新: ファイルを XML ドキュメントとして開き、そこから抽出することで、これらを抽出することは可能でしょうか?
追加の背景: 上記の単純化されたフラグメントは、私の会社の古い VB6 製品で電子フォームとして使用される、はるかに大きなドキュメントの一部です。スキーマなしで XML と HTML が混在しており、これまでVB6 Web ブラウザーコントロールを介してのみ表示されてきました。Web ブラウザー コントロールは、不適切な形式のマークアップに非常にうまく対処し、JavaScript エラーをほとんど無視するため、設計に内在するすべての問題が 10 年間悪化するのを許されてきました。
psレガシードキュメントはサードパーティによって管理されているため、jqueryを使用できないことに注意してください。