我创建了以下javascript:
<script>
function stats(cod) {
var th = document.getElementsByTagName("th");
var tds = document.getElementsByClassName("pt");
httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState == 4 && httpRequest.status == 200) {
var xmlDoc = httpRequest.responseXML.documentElement;
th[0].innerHTML = xmlDoc.getElementsByTagName('name')[0].firstChild.nodeValue;
tds[0].innerHTML = xmlDoc.getElementsByTagName('what')[0].firstChild.nodeValue;
tds[1].innerHTML = xmlDoc.getElementsByTagName('office')[0].firstChild.nodeValue;
tds[2].innerHTML = xmlDoc.getElementsByTagName('www')[0].firstChild.nodeValue;
tds[3].innerHTML = xmlDoc.getElementsByTagName('over')[0].firstChild.nodeValue;
}
}
httpRequest.open("GET","getData.php?codice=" + cod, true);
httpRequest.send(null);
}
</script>
我确信这是一种更好的方式来读取XML内容并将其值分配给表TD。我尝试使用xmlDoc
获取xmlDoc.getElementsByTagName('response').childNodes;
中包含的所有元素的数组,但结果似乎未定义。
编辑:
以下是XML示例:
<response>
<name>The name</name>
<what>What is</what>
<office>The office</office>
<www>The website</www>
<over>Yes</over>
</response>
答案 0 :(得分:1)
getElementsByTagName
返回一个类似数组的元素集合。
特定元素(包括集合的每个成员)可能有childNodes
。该集合本身不会。
答案 1 :(得分:1)
您可以轻松访问response
元素
var response = httpRequest.responseXML.documentElement;
我不会尝试使用childNodes
,因为可以在元素之间包含文本节点,而使用response.children
会为您提供子元素,但仅限于现代浏览器。在这种情况下,元素还具有textContent
属性,您可以在所有firstChild.nodeValue
次访问时使用该属性:
var childElements = response.children;
th[0].innerHTML = childElements[0].textContent;
tds[0].innerHTML = childElements[1].textContent;
...
另一方面,一旦XML中元素的顺序发生变化或省略了元素,您将读出错误的数据,因此使用例如response.getElementsByTagName('www')[0].textContent
以名字命名。