通过javascript显示xml数据

时间:2016-05-20 13:51:27

标签: javascript xml null undefined

我正在为内部网站构建天气组件,我正在尝试通过javascript拉取xml数据。但是我无法定位正确的节点。我的代码一直告诉我它的null或未定义,我似乎无法找出正确的变量代码来定位数据。

这是我的代码:

displayATLWET(0);
function displayATLWET(i) {
    var path = 'http://forecast.weather.gov/MapClick.php?lat=33.6413&lon=-84.4501&unit=0&lg=english&FcstType=dwml';
    if (window.XMLHttpRequest) {
        xmlhttp=new XMLHttpRequest();
    } else {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.open("GET",path,false);
    xmlhttp.send();

    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        var xmlDoc;
        var x;
        var temp;
        var xmlDoc = xmlhttp.responseXML; 
        x = xmlDoc.getElementsByTagName("data");
        temp = x[1].getElementsByTagName("value")[0].childNodes[0].nodeValue;

        // tempSUMM = x[1].getElementsByTagName("weather-conditions")[0].getAttribute("weather-summary");

        document.getElementById("atlWet").innerHTML = temp;
    }
}

这是我的HTML:

<div id="atlWet"></div>

2 个答案:

答案 0 :(得分:0)

你是document.getElementById(&#34; atlWet&#34;)。innerHTML为null意味着没有id为atlWet的元素。您应该包含一些您正在使用的HTML,以便我们提供帮助。

答案 1 :(得分:0)

document.getElementById("atlWet")为null,因为该元素出现在脚本之后。这就是脚本需要包含在底部的原因。如果由于某种原因您无法将脚本放在底部,请在加载DOM后调用该函数,即:

window.addEventListener("load", function() {
  displayATLWET(0);
}, false);

window.addEventListener("load", function() {
  displayATLWET(0);
}, false);


function displayATLWET(i) {
  var path = 'http://forecast.weather.gov/MapClick.php?lat=33.6413&lon=-84.4501&unit=0&lg=english&FcstType=dwml';
  if (window.XMLHttpRequest)
    xmlhttp = new XMLHttpRequest();
  else
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");


  xmlhttp.open("GET", path, false);
  xmlhttp.send();


  if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

    var xmlDoc;
    var x;
    var temp;



    xmlDoc = xmlhttp.responseXML;
    x = xmlDoc.getElementsByTagName("data");
    temp = x[i].getElementsByTagName("value")[0].childNodes[0].nodeValue;

    tempSUMM = x[i].getElementsByTagName("weather-conditions")[0].getAttribute("weather-summary");


    document.getElementById("atlWet").innerHTML = tempSUMM;
  }
}
<div id="atlWet"></div>