2011-06-23 49 views
0

我設置了一個網站的自行車報價,並且我在重新加載數據之後,它已經被使用過一次時遇到了麻煩。首次使用後,無法訪問XML數據使用JQUERY html()或append()

我用一堆數據設置了一個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

我能夠加入.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();