2

我正在研究一个小网站的想法,但我在这方面都不是很擅长。我基本上有一个 HTML 测验,它会提示用户我在 XML 中定义的问题。

window.onload = function xml() 
{
    // get form from HTML
    var form = document.getElementById("form");

    // get XML document
    if (window.XMLHttpRequest)
    {
            var xmlhttp = new XMLHttpRequest();
    }

    // open XML
    xmlhttp.open("GET", "questions.xml", false);
    xmlhttp.send(null);

    // initialize elements for do document, questions, and details
    var xmlDoc = xmlhttp.responseXML;
    var question = xmlDoc.getElementsByTagName("question");

在上面的行中,我收到一条错误消息“无法调用 null 的方法 'getElementsByTagName'”。然而,奇怪的是,如果 XML 文件有多个“问题”标签,我只会得到所说的错误。如果我的 XML 中只有一个“问题”标签,那么整个函数就可以完美运行。所以我想知道在这种情况下发生了什么,以及为什么它对我不起作用。

(下面的其余代码显示了我开始使用该功能的地方)

    var qXML = xmlDoc.getElementsByTagName("q");

    // write values into HTML for each question
    for ( i = 0 ; i < question.length ; i++ )
    {
        // qBlock div for question
        var div = document.createElement('div');
        div.className = "qBlock";

此代码继续运行一段时间以获取 HTML 中的所有字段。总的来说,循环中的这段代码一直有效,除非有多个“问题”元素。

非常感谢任何可以帮助/教我的人。如果我做错了什么,也可以随时告诉我。我愿意接受任何批评。

4

1 回答 1

2

虽然我不能在没有看到您的questions.xml文件的情况下确定这是问题所在,但您可能有多个根元素。例如:

<?xml version="1.0"?>
<question>...</question>
<question>...</question>

XML 不允许这样做,它将无法解析。将它们包装在一个根元素中:

<?xml version="1.0"?>
<questions>
    <question>...</question>
    <question>...</question>
</questions>
于 2013-06-10T03:09:20.150 回答