Javascript:如何获取子元素的文本并将其显示在HTML文件的<p>标记中

时间:2015-04-24 15:21:33

标签: javascript

我正在尝试提取此XML文件的信息,并在HTML文件的<p>标记中显示其中的一些信息。 我的代码在这里:

打开(这只是为我的三种方式做准备的开场代码):

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","books.xml", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;

star = xmlDoc.documentElement.childNodes;
y = xmlDoc.getElementsByTagName('book');
var container = document.getElementById('page-wrapper');
var v = parseInt(document.getElementById('input').value);
var autho = y[v - 1].getElementsByTagName('author');

选项1:

var text= [];
for (var i= 0, n= y[v-1].childNodes.length; i<n; i++) {
  var child= element.childNodes[i];
  if (child.nodeType===1 && child.tagName.toLowerCase()=='author')
    text.push(getTextContentExceptScript(child));
  else if (child.nodeType===3)
    text.push(child.data);
}
return text.join('');
var pa = document.createElement("p");
var pt = document.createTextNode(text);
pa.appendChild(pt);
container.appendChild(pa);

选项2:

var a = 0;
while (a < autho.length)
{
  var t = document.createTextNode(autho[a].textContent);
  var d = document.createElement("p");
  var e = document.createTextNode("Author: " + t);
  d.appendChild(e);
  container.appendChild(d);
  a = a + 1;
}

选项3:

for(var k = 0; k < autho.length; k++)
{
  var t = document.createTextNode(autho[k].childNodes[0].nodeValue);
  //p_text3 = p_text3 + t + ', ';
  var d = document.createElement("p");
  var e = document.createTextNode("Author: " + t);
  d.appendChild(e);
  container.appendChild(d);
}

通过上述三种方式:我对option1没有任何意义,与选项二相同的结果是:作者:[Object Text],[Object Text],...

请帮帮我,谢谢。

1 个答案:

答案 0 :(得分:0)

如果您以这种方式修复最后一个选项:

for(var k = 0; k < autho.length; k++)
{
    var d = document.createElement("p");
    var e = document.createTextNode("Author: " + autho[k].childNodes[0].nodeValue); // fix
    d.appendChild(e);
    container.appendChild(d);
}

它应该工作。您试图将字符串与textNode对象连接起来......

但我们也需要一个XML样本......也许问题就在那里。