javascript - 使用 JQuery 迭代深层 XML 结构 - IE9

标签 javascript jquery xml

在 JS 中我有一个变量 data具有以下 XML:

<data>
    <delivery>
        <checklist>Pre-Vehicle Check Bulk</checklist>
        <delivery>800056799</delivery>
        <shipment>105065995</shipment>
        <driverName>John Doe</driverName>
        <driverLanguage>NL</driverLanguage>
        <country>Belgium</country>
        <product>01248741</product>
        <productDescription>Metam 200%-33</productDescription>
        <location>P0204A</location>
    </delivery>
    <questions>
        <question>
            <id>Question-1</id>
            <driver>true</driver>
            <operator>true</operator>
            <isAnswered>false</isAnswered>
            <answer/>
            <options>
                <option>OK</option>
                <option>NOK</option>
                <option>NA</option>
            </options>
        </question>
        <question>
            <id>Question-2</id>
            <driver>true</driver>
            <operator>false</operator>
            <isAnswered>false</isAnswered>
            <answer/>
            <options>
                <option>OK</option>
                <option>NOK</option>
            </options>
        </question>
    </questions>
</data>

我正在基于此 XML 创建一个 JS 对象。结果应该是一个包含问题的数组。每个问题都有其属性和一系列选项。所以基本上与您在 questions 下的 XML 中看到的结构相同。标签

下面是生成对象的 JS 代码:

var questions = [];
$(data).find("question").each(function(){
    var options = [];
    $(this).find("option").each(function(){
        options.push($(this).text());
    });

    questions.push({
        id : $(this).find("id").text(),
        driver : $(this).find("driver").text(),
        operator : $(this).find("operator").text(),
        isAnswered : $(this).find("isAnswered").text(),
        answer : $(this).find("answer").text(),
        title : $(this).find("title").text(),
        text : $(this).find("text").text(),
        text_driver : $(this).find("text_driver").text(),
        options : options
    });
});

现在的问题是选项没有被添加。从调试器中我可以看到在第一个 .each 之后<option>标签已从当前节点 this 中删除。所以值为:

<options>OKNOKNA</options>

如何使用 JQuery 实现多个 XML 级别的循环?

编辑:它似乎与 IE9 有关,我需要让它在这个特定的浏览器上运行。

最佳答案

我猜测 IE9 认为这些 HTML 选项元素位于无效位置。

在将其传递给 $ 之前,使用 jQuery.parseXML() 对其进行解析。

关于javascript - 使用 JQuery 迭代深层 XML 结构 - IE9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26737324/

相关文章:

javascript - 我的 javascript 有问题

javascript - 重定向到 url,如果 Jwplayer 加载媒体时出错

jquery ajax post 被调用时停止

jquery - Select2 4.0.0不支持标签,无法通过ajax调用获取标签项

javascript - Jquery UI 选项卡 : Link to next/specific tab from within tab

java - 从 xslt 调用 java 静态方法时出错

java - 有没有办法在 Kotlin 类的 block 注释中指定 XML 文件?

javascript - 带有代理脚本的 IMacros

javascript - 在 AJAX 中传递多个变量

javascript - 为什么 jquery 的 parseXML 函数在 XML 看起来正常时失败了?