使用 JavaScript 显示 XML 数据,在函数结束时出现问题
displaying xml data with javascript, issue at end of function?
尝试为将来的项目制作文本/示例页面。 我希望能够一次从xml文档中列出一定数量的对象,并带有一个按钮来加载下一个对象。 有点像浏览目录。 这是我得到的,我很确定问题出在 listbythree 函数的末尾。 我只是不知道如何在页面加载时将该函数插入指定的div 元素。 有什么帮助吗?
<!DOCTYPE html />
<html>
<head>
<script>
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5
}
xmlhttp.open("GET","books.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var i=0;
var x=xmlDoc.getElementsByTagName("book");
function listbythree()
{
for (i;i<3;i++)
{
document.write("<div style='display:inline;float:left;background-color:#ffff99;padding:10px;width:300px;height:210px;margin:5px;font-size:14px;'><img style='float:left;padding-right:4px' src=");
document.write(x[i].getElementsByTagName("cover")[0].childNodes[0].nodeValue + " />");
document.write("<em>" + x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue + "</em><br/>");
document.write(x[i].getElementsByTagName("author")[0].childNodes[0].nodeValue + "<br/>");
document.write(x[i].getElementsByTagName("pub")[0].childNodes[0].nodeValue + "<br/>");
document.write(x[i].getElementsByTagName("edition")[0].childNodes[0].nodeValue + "<br/>");
document.write(x[i].getElementsByTagName("genre")[0].childNodes[0].nodeValue + "<br/>");
document.write("Have I Read: " + x[i].getElementsByTagName("read")[0].childNodes[0].nodeValue);
document.write("</div>");
}
document.getElementById("booksbythree").innerHTML=this;
};
function next()
{
if (i<x.length-1)
{
i+3;
listbythree();
}
}
function previous()
{
if (i>0)
{
i-3;
listbythree();
}
}
</script>
</head>
<body onload="listbythree()">
<div id="booksbythree"></div><br/><br/>
<input type="button" onclick="previous()" value="<<" />
<input type="button" onclick="next()" value=">>" />
</body>
</html>
你的 for 循环只在i<3
时循环,所以它永远不会显示任何超出第三个的元素。您可以执行以下操作来解决此问题。此外,当您的 for 循环也添加到i
时,您的下一个按钮是将 3 添加到i
,这将使您每次单击下一步时跳过 3 个元素。
function listbythree()
{
var j = i+3;
for (i;i<j&&i<x.length;i++)
{
....
}
}
function next()
{
if (i<x.length-1)
{
listbythree();
}
}
第二点,我建议你使用jQuery,它可以使AJAX和XML解析更容易。
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 参数变量出现ngTable指令问题
- 剑道网格jQuery动画()问题
- 为什么“;未定义的“;在JavaScript中结束循环
- 我的jQuery插件参数没有正确启动,遇到了问题
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- TableExport jquery插件:文件名和扩展名问题
- JavaScript Pub/Sub属性访问问题
- 循环结束/推送到数组之前在页面上呈现EJS
- JavaScript异步问题
- 如何解决Yii中的页面刷新问题
- 使用 JavaScript 显示 XML 数据,在函数结束时出现问题
- JS:使用引导日期选择器在视图模式“月”中出现结束日期问题
- Jquery 缺少结束脚本标记“>”的问题
- 如何解决Javascript作用域问题.结束是答案吗?
- 视频标签的问题.视频通话结束后,海报不可见
- while循环有什么问题?永不结束的循环
- 关于函数和动画开始/动画结束事件的jQuery问题