javascript结果数组仅打印最后一行XML,即使我使用0
我有一个字幕XML文件,它有start、dur和text来分配临时数组,然后将每个索引传递给字幕数组。当我想看到索引为0的字幕数组时,它应该打印包含start、dur和text的第一行文本,而不是打印最后一行文本。 错误的结果显示 467.071,3.643,感谢收看,请订阅,评分和评论 我尝试了索引50,但它仍然打印最后一行。我是否将其添加到错误的循环中 下面是前3行XML的示例(总文本行数为136)javascript结果数组仅打印最后一行XML,即使我使用0,javascript,xml,html,Javascript,Xml,Html,我有一个字幕XML文件,它有start、dur和text来分配临时数组,然后将每个索引传递给字幕数组。当我想看到索引为0的字幕数组时,它应该打印包含start、dur和text的第一行文本,而不是打印最后一行文本。 错误的结果显示 467.071,3.643,感谢收看,请订阅,评分和评论 我尝试了索引50,但它仍然打印最后一行。我是否将其添加到错误的循环中 下面是前3行XML的示例(总文本行数为136) 你好,书呆子们。 在本视频中,我们';我们将制作各种颜色的发光棒 并解释关于它们的一
你好,书呆子们。
在本视频中,我们';我们将制作各种颜色的发光棒
并解释关于它们的一些有趣的观点。
这里是一个javascript示例
<script type="text/javascript">
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",dname,false);
xhttp.send();
return xhttp.responseXML;
}
function init()
{
var subtitleArray = new Array();
var tempArray = new Array();
var c = document.getElementById('container');
captionsDoc = loadXMLDoc("captions.xml");
x=captionsDoc.getElementsByTagName('text');
for(i=0;i<x.length;i++)
{
tempArray[0] = x[i].getAttribute('start');
tempArray[1] = x[i].getAttribute('dur');
tempArray[2] = x[i].childNodes[0].nodeValue;
subtitleArray[i] = tempArray;
}
c.innerHTML = subtitleArray[0];
}
window.onload = init;
</script>
函数loadXMLDoc(dname)
{
if(window.XMLHttpRequest)
{
xhttp=newXMLHttpRequest();
}
其他的
{
xhttp=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
xhttp.open(“GET”、dname、false);
xhttp.send();
返回xhttp.responseXML;
}
函数init()
{
var subtitleArray=新数组();
var tempArray=新数组();
var c=document.getElementById('container');
captionsDoc=loadXMLDoc(“captions.xml”);
x=captionsDoc.getElementsByTagName('text');
for(i=0;我只是猜测如何修复它:在for循环内初始化(可能还声明)tempArray
,和/或将(i=0;…)的更改为(var i=0;…)
成功了。我将declare tempArray放入for循环中。如果您想知道为什么会发生这种情况,那是因为当您分配subtitarray[I]=tempArray;
subtitarray
的每个元素都指向同一个对象,因此在任何地方更改tempArray
都会更改subtitarray
的所有元素。通过在循环的每次迭代中创建一个新对象,subtitarray
中的每个元素都将获得自己的tempArray
与……合作。
<script type="text/javascript">
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",dname,false);
xhttp.send();
return xhttp.responseXML;
}
function init()
{
var subtitleArray = new Array();
var tempArray = new Array();
var c = document.getElementById('container');
captionsDoc = loadXMLDoc("captions.xml");
x=captionsDoc.getElementsByTagName('text');
for(i=0;i<x.length;i++)
{
tempArray[0] = x[i].getAttribute('start');
tempArray[1] = x[i].getAttribute('dur');
tempArray[2] = x[i].childNodes[0].nodeValue;
subtitleArray[i] = tempArray;
}
c.innerHTML = subtitleArray[0];
}
window.onload = init;
</script>