Я работаю над небольшой идеей веб-сайта, и я не очень хорош в этом. У меня в основном есть викторина HTML, которая подскажет пользователю вопросы, которые я определил в XML.XML, Javascript - Невозможно вызвать метод getElementsByTagName of null
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“нуль». Странная вещь, однако, заключается в том, что я получаю указанную ошибку только в том случае, если 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. В общем, этот блок кода в цикле работает повсюду, если только не существует нескольких элементов вопроса.
Огромное спасибо всем, кто может помочь/научить меня никому из этого. Также не стесняйтесь говорить мне, если я делаю что-либо еще неправильно. Я открыт для любой критики.
Как выглядит ваш файл 'questions.xml'? – icktoofay
Сообщает вам, что * xmlDoc * имеет значение * null *, которое возвращается, если запрос не завершен или не выполнен успешно. Проверьте ответ перед вызовом * getElementsByTagName *. Код в части «остальной части кода» выглядит сломанным, он использует тег * q *, присваивает * qXML *, затем выполняет итерацию по * вопросу *. – RobG