【问题标题】:Can't access XML data after first use using JQUERY html() or append()首次使用 JQUERY html() 或 append() 后无法访问 XML 数据
【发布时间】:2011-06-23 23:40:05
【问题描述】:

我正在为网站设置循环报价,但在数据已经使用过一次后,我无法重新加载数据。

我已经建立了一个包含大量数据的 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

【问题讨论】:

    标签: html xml jquery


    【解决方案1】:

    我能够通过将 .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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      • 2019-12-14
      • 2021-01-11
      • 1970-01-01
      • 2011-09-10
      • 2013-03-08
      相关资源
      最近更新 更多