我正在研究一个小小的网站创意,我对此并不是很了解。我基本上有一个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");
在上面一行中,我收到一条错误消息“无法调用方法'getElementsByTagName'为null”。然而,奇怪的是,如果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中的所有字段。总的来说,循环中的这段代码一直在工作,除非有多个“问题”元素。
非常感谢能够帮助/教我任何这方面的人。也可以随意告诉我,如果我做错了什么。我对任何批评持开放态度。
答案 0 :(得分:2)
虽然如果没有看到questions.xml
文件我无法确定这是问题,但您可能有多个根元素。例如:
<?xml version="1.0"?>
<question>...</question>
<question>...</question>
XML不允许这样做,并且无法解析。将它们包装在一个根元素中:
<?xml version="1.0"?>
<questions>
<question>...</question>
<question>...</question>
</questions>