【发布时间】:2014-07-27 01:39:47
【问题描述】:
我正在研究基于 xml 内容显示图像的内容流。 我将它构建为一个站点,所以它是 html 和 javascript,并且出于某种未知的原因 - 相信我,我已经用尽可能精细的齿梳梳理了它 - 我的 javascript 只是没有加载我的 xml (这就是我相当确定问题所在,但我可能是错的)它向我抛出了“getElementsByTagName”为空的错误。现在我还没有内置完整的功能,我只是想通过将 xml 读取为文本来测试它,所以请耐心等待。
加载XMLDoc.js:
function loadXMLDoc(filename)
{
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else // code for IE5 and IE6
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",filename,false);
xhttp.send();
return xhttp.responseXML;
}
我在 html 中的内部 java:
<script>
xmlDoc = loadXMLDoc("test.xml");
var x = xmlDoc.getElementsByTagName("song");
for (i=0; i<x.length; i++);
{
var a = (x[i].getElementsByTagName("source")[0].childnodes[0].nodeValue);
var b = (x[i].getElementsByTagName("artist")[0].childnodes[0].nodeValue);
var c = (x[i].getelementsByTagName("title")[0].childnodes[0].nodeValue);
var par = '<img class= "item" href ="#" ondblclick = "confirm()" src ="' +'" "title="' +b+ '"-"'+ c+ ' " />';
document.getElementById("demo").innerHTML += par;
}
</script>
以及完整的错误:
未捕获的类型错误:无法读取未定义专辑的属性“getElementsByTagName”。html:24 (匿名函数)
为了好玩,我的 xml 示例:
<song>
<source>imgs/Beck.jpg</source>
<title>Modern Guilt</title>
<artist>Beck</artist>
</song>
希望我涵盖了所有需要的内容,我知道这可能很愚蠢,但我无法确定。
【问题讨论】:
-
也许
xmlDoc是undefined。你在哪个浏览器中测试过这个?请参阅 MDN 中的注释:“注意:从 Gecko 30.0(Firefox 30.0 / Thunderbird 30.0 / SeaMonkey 2.27)开始,由于对用户体验的负面影响,主线程上的同步请求已被弃用。” -
您是否进行了基本调试以查看它是哪一行代码以及是
xmlDoc还是x[i]是undefined?在此处发布之前,应完成基本的调试和故障排除。 -
顺便说一句,将
xhttp = new ActiveXObject("Microsoft.XMLHTTP");包装在 try..catch 中是很常见的,因为您无法对其进行测试,如果不支持它,则会引发错误(尽管很少有浏览器应该采用该分支) .
标签: javascript html xml xmlhttprequest getelementsbytagname