【问题标题】:Accessing Elements and Attributes from a Live Feed XML从 Live Feed XML 访问元素和属性
【发布时间】:2019-03-28 17:37:25
【问题描述】:

我正在尝试访问下一辆公共汽车到达指定公共汽车站位于北卡罗来纳州阿什维尔的 Live Feed 公交系统的时间,但我不断返回两个控制台错误: “时间没有定义” 和 "无法读取未定义的 geElementsbyTagName 的属性"

您可以使用“470”作为考试stopID 来查看 XML 文件。

虽然我不确定是否将 ID 正确添加到 URL,但我已确保添加了正确的站点 ID。 如果元素嵌套在另一个元素中,这是一个问题吗?

var feedURL = "http://webservices.nextbus.com/service/publicXMLFeed?command=predictions&a=art&stopId="+stopID;
var xhttp = new XMLHttpRequest();

xhttp.onreadystatechange = function(){
    if(this.readyState == 4 && this.status == 200){
        attribute(this);
    }
};
xhttp.open("GET", feedURL, true);
xhttp.send();

function attribute(feedURL){
    var y; 
    var xmlDoc = xml.responseXML;
    var time = "";
    y = xmlDoc.getElementsbyTagName('prediction');
    time = x.getAttribute('minutes');
}
console.log(time);

我预计公共汽车到达指定站点之前的分钟数。

【问题讨论】:

    标签: javascript html xml http-live-streaming android-livedata


    【解决方案1】:

    您正在尝试在您定义它的函数之外记录变量 time 的值。您可以将代码更改为此并且应该可以工作:

    function attribute(feedURL){
        var y; 
        var xmlDoc = xml.responseXML;
        var time = "";
        y = xmlDoc.getElementsbyTagName('prediction');
        time = x.getAttribute('minutes');
    
        console.log(time);
    }
    

    【讨论】:

    • 这适用于时间问题,但 getElementsbyTagName 仍未定义。不知道为什么!
    • 我想帮助解决这个问题,但是我看不到变量 xml 的定义位置。实际的错误是说xmlDoc 为空,所以你不能在上面调用getElementsByTagName。我无法告诉您为什么 xmlDoc 为空,但不知道 xml 来自何处。 xml.responseXML 一定是 null,因为它是在不同的范围内定义的(因此除非它作为参数传递或者如果它是在更全局的范围内定义的,否则该函数无法看到它。)
    猜你喜欢
    • 2012-04-13
    • 2011-01-03
    • 2011-10-31
    • 2012-05-08
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    相关资源
    最近更新 更多