首页 > 解决方案 > 错误类型错误:未定义不是具有全局变量的对象

问题描述

编辑:其他解决方案不使用 XML 调用,尽管阅读了其他问题仍然不明白如何修复这里的代码。

我是 JavaScript/HTML 的新手,现在我正在制作一个简单的应用程序来读取 XML 数据并显示它,本质上我在应用程序的左侧有一堆杂志的数据(封面、发布日期等)每个问题都有一个列表,我正在处理 300 多个问题,所以手工完成会花费太长时间,所以我编写了一个自动填充它的方法,它按预期工作。

现在,当您单击某个问题时,右侧会出现一个显示问题数据的面板,但我无法让它工作

XML应该没问题,我用这个方法解析它。

function loadDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
    list(this);
    }
  };
  xhttp.open("GET", "issuesData.xml", true);
  xhttp.send();
}

列表方法就是这个,它填充了我提到的列

function list(xml) {
  var i;
  var xmlDoc = xml.responseXML;
  var list="";
  issues = xmlDoc.getElementsByTagName("ISSUE");
  for (i = 0; i <issues.length; i++) { 
    list += "<li>" +
    issues[i].getElementsByTagName("TITLEENG")[0].childNodes[0].nodeValue +
    "</li>";
  }
  document.getElementById("issueList").innerHTML = list;
}

我将变量问题作为全局变量,因为我需要能够从多个方法中访问它,本质上我的想法是 onLoad 方法 loadDoc 运行并且我的 var 问题充满了我需要的数据,最后就是这样我希望它成为。

我想在应用程序加载时显示有关某个问题的信息,所以我写了这个方法

function current(pos){
    document.getElementById("titleEng").innerHTML = issues[pos].getElementsByTagName("TITLEENG")[0].childNodes[0].nodeValue;
}

但是应用程序不起作用,我得到了之前提到的错误,我认为问题出在使用带参数的方法,或者元素id错误,老实说在阅读了十几次代码并在网上查找后我仍然有不知道问题是什么,我想我一定是由于全局值,因为完整的错误消息是:

TypeError: undefined is not an object (evaluating 'issues[0].getElementsByTagName') (00:42:51:853 | error, javascript)

我猜javascript不知道是什么问题?老实说,错误是如此非描述性的,我不知道出了什么问题以及该怎么做。

我非常尝试寻找有同样错误的其他人

标签: javascripthtmlxml

解决方案


推荐阅读