Приложение XML: временная строка не работает

Строка «AbfahrtszeitIst» не может быть отображена в документе HTML. Когда я использую другие строки, проблем нет. Я не понимаю, почему, потому что в теге XML-документа «Haltepositionen» все работает, а строка «AbfahrtszeitIst» - нет.

<html>
<head>
<meta name = "robots" content = "noindex">
<meta name = "viewport" content = "width=device-width, initial-scale=1.0, user-scalable=no">
<meta charset = "utf-8">
</head>
<body onload = "loadXMLDoc()">

 <script>


function loadXMLDoc() {
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      myFunction(this);
    }
  };
  xmlhttp.open("GET", "https://start.vag.de/dm/api/v1/fahrten.xml/Bus/2049872", true);
  xmlhttp.send();
}
function myFunction(xml) {
  var i;
  var xmlDoc = xml.responseXML;
  var table = "<tr><th style='text-align:left'></th><th></th></tr>";
  var x = xmlDoc.getElementsByTagName("Halteposition");
  var c = xmlDoc.getElementsByTagName("FahrtResponse");
  var t = xmlDoc.getElementsByTagName("Fahrtverlauf");
  for (i = 0; i <x.length; i++) { 
    table += "<tr><td>" +
    x[i].getElementsByTagName("Haltestellenname")[0].childNodes[0].nodeValue +
    "</td><td>" +
    "<a target='_blank' href='https://www.google.com/maps?q = " + x[i].getElementsByTagName("Latitude")[0].childNodes[0].nodeValue + "," + x[i].getElementsByTagName("Longitude")[0].childNodes[0].nodeValue + "'><grau>Karte</a>" + 
    "</td><td>" + //PROBLEM:
    x[i].getElementsByTagName("AbfahrtszeitIst")[0].childNodes[0].nodeValue +
    "</td></tr>";
  }
  for (v = 0; v <c.length; v++) { 
  document.getElementById("fahrten-titel").innerHTML = c[v].getElementsByTagName("Linienname")[0].childNodes[0].nodeValue + " " + c[v].getElementsByTagName("Richtungstext")[0].childNodes[0].nodeValue;
  }
  for (m = 0; m <t.length; m++) { 
  var startzeit_hhmm = new Date(t[m].getElementsByTagName("AbfahrtszeitIst")[0].childNodes[0].nodeValue).toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1"); 
  document.getElementById("startzeit").innerHTML = "Start um: " + startzeit_hhmm + " Uhr";   

}

  document.getElementById("fahrten-tabelle").innerHTML = table;
  document.getElementById("fahrzeug").innerHTML = "Bus: " + (parameter_fnummer) ;

  }





</script>
<div id = "fahrten-table"></div>
</body>
</html>

Я думаю, нам нужно увидеть XML.

Michael Kay 01.05.2018 18:55
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
18
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это потому, что для последнего узла AbfahrtszeitIst нет узла с именем Halteposition. Вы можете добавить чек, как показано ниже:

for (i = 0; i <x.length; i++)
{
    //Added line
    var abfahrtszeitistvalue = x[i].getElementsByTagName("AbfahrtszeitIst")[0] ? x[i].getElementsByTagName("AbfahrtszeitIst")[0].childNodes[0].nodeValue : "";

    table += "<tr><td>" +
    x[i].getElementsByTagName("Haltestellenname")[0].childNodes[0].nodeValue +
    "</td><td>" +
    "<a target='_blank' href='https://www.google.com/maps?q = " + x[i].getElementsByTagName("Latitude")[0].childNodes[0].nodeValue + "," + x[i].getElementsByTagName("Longitude")[0].childNodes[0].nodeValue + "'><grau>Karte</a>" + 
    "</td><td>" + //PROBLEM:
    abfahrtszeitistvalue +
    "</td></tr>";
}

Другие вопросы по теме