我正在为内部网站构建天气组件,我正在尝试通过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>
答案 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>