我正在设置一个网站的循环引号,而且在我已经使用过一次之后我就无法重新加载数据。
我已经设置了一个包含大量数据的XML文件。数据包括作者,作者和作者的职称(引用,作者,标题)。
然后我有一个jQuery .ajax调用并将其存储在变量xmlData
中。
然后使用xmlData将html附加或添加到指定的id标记。
我正在使用setInterval()来遍历xml数据。
这个想法是在循环中经历它:1 | 2 | 3 | 1 | 2 | 3等等。但当它返回时,数据被附加到ID之后,它就不再出现了。就像从XML文件中删除了数据一样。
任何帮助将不胜感激。代码如下,以及我正在进行测试的网站URL。
<script language="javascript" type="text/javascript">
var xmlData;
var xmlFAILdata;
var nextE = 0;
var ttlE;
var quote;
var author;
var title;
$(function(){
$.ajax({
type: "GET",
url:"/wp-content/themes/privilegeofpersecution/endorsements.xml",
data: "",
dataType:"xml",
async: false,
success: function(xml){
//alert("XML SUCCESS!");
xmlData = xml;} ,
error: function(xmlFAIL){
alert("XML FAIL");
}
});
ttlE = $(xmlData).find('endorsement').length;
//Since .length return the number starting at 1 rather than 0 subtract 1 for accuracy
ttlE -= 1;
//On pageload, load in the first Endorsement into variables
quote = $(xmlData).find('endorsement').eq(0).children('quote');
author =$(xmlData).find('endorsement').eq(0).children('author');
title =$(xmlData).find('endorsement').eq(0).children('title');
//Append variables to id containers
$("#quote").html(quote);
$("#author").html(author);
$("#title").html(title);
//executes the function "next" which places the next endorsement
setInterval("next()", 5000);
});
function next(){
console.log('Next Function Started');
if(nextE >= ttlE){
nextE = 0;
}
else{
nextE++;
}
console.log('nextE = ' + nextE);
quote = $(xmlData).find('endorsement').eq(nextE).children('quote');
author =$(xmlData).find('endorsement').eq(nextE).children('author');
title =$(xmlData).find('endorsement').eq(nextE).children('title');
$("#quote").html(quote);
$("#author").html(author);
$("#title").html(title);
}
</script>
以下是网站:http://privilegeofpersecution.com/wp-content/themes/privilegeofpersecution/xmltest.html
答案 0 :(得分:0)
我能够通过在变量赋值中添加.clone()来解决问题。这样我就不只是将XML对象放在DOM中并覆盖它。相反,我每次需要时都会从XML中复制数据,以便保持原状。
quote = $(xmlData).find('endorsement').eq(0).children('quote').clone();
author =$(xmlData).find('endorsement').eq(0).children('author').clone();
title =$(xmlData).find('endorsement').eq(0).children('title').clone();