我有一个糟糕的遗留 HTML 文档,其中包含一些用于创建元数据形式的混合 XML 和一些复杂的 JavaScript 来操作所有需要升级到 IE9 的元数据。目前,我在使用包含选项元素内的一些额外 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');
如果我通过 Watch 窗口检查 DOM,那么下面唯一的元素control.options[control.selectedIndex]
就是选项中的文本元素。例如“请选择”、“一个”等。
如何从所选选项中获取 tla:instruction 元素的数组/列表/集合?
更新:是否可以通过将文件作为 XML 文档打开然后从那里提取它们来提取它们?
附加背景:上面的简化片段是我公司旧 VB6 产品中用作电子表格的更大文档的一部分。它混合了 XML 和 HTML,没有架构,并且仅通过VB6 Web 浏览器控件显示。因为 Web 浏览器控件可以很好地处理格式错误的标记并且几乎忽略了 JavaScript 错误,所以设计中固有的所有问题都被允许恶化十年。
ps 请注意,我不能使用 jquery,因为旧文档是由第三方控制的。